現在大容量存儲的圖像格式,我已閱讀這些問題可能有這個問題的關係:Scalable Image Storage,Large scale image storage,https://serverfault.com/q/95444。
下面的事情我已經找到了,之前我問我的問題:用於相對於存儲系統的性質
1. Facebook uses Haystack (something CLOSED-SOURCE to the open-source world)
which is very efficient. Its a form of File system storage, engineered for speed
and large metadata management.
2. Any Operating System has a file limit in directories and may start to perform
extremely poorly when this limit is being exceeded.
3. Most NoSQL developers, have found it easy to use CouchDB/CouchBase Server
to handle images as it handles it as an attachment, glued to a document (record
in the database). However, still, this is file system storage.
4. HDFS, NFS, ZFS, are all File systems that may make it easy to handle large
distributed data. However, at applications like facebook, they could not help
5. Any proper form of caching is very essential to highly Image dependent
applications
6. Some PHP developers (mostly) have used MySQL to keep image meta-data while
creating folders and sub-folders (matching the meta-info) on the file system.
Each image will have a random hash name in relation to the meta-data in the
database to enable fast location on the file system
瞭解這些報表和更多的人後,我已經認識到其非常昂貴,以保持數十億不斷越來越多的文件系統上的圖像。如果任何人使用雲存儲(如Amazon S3
),則會由於高圖像流量以及應用程序的存儲空間而導致業務中斷。
我已經評估使用CouchBase Server,管理圖片作爲附件。但是,對於圖像增長應用程序,這也是一個文件系統存儲,我想知道如果成千上萬的人同時訪問圖像,Couch基礎會如何表現。我可以使用Cloudant/Big Couch,它具有自動分片/負載平衡功能。主要原因在於NoSQL解決方案還可以在文件系統上保留映像,並且以高併發速率請求映像時,這可能會導致整個服務(映像可能很重)。
我的思考
我想管理我的圖像爲SVG
格式。這是因爲,我認爲我可以將此SVG數據作爲文本存儲在我的存儲中。現在,大多數NoSQL數據庫的文檔(記錄)大小至少不超過4MB(不確定)的大小限制。這提出了一個問題,因爲根據圖像,SVG文件甚至可以達到6-10MB。所以,我認爲我不能使用Couch基礎服務器來存儲SVG。此外,應用程序的性質是這樣的,圖像數據不斷增長,從不存檔/從不刪除:沙發基地不利於這種數據(高度持久和不變的數據)。
這使我回到了RDBMS(尤其是Oracle),這些文檔都是以良好的文本壓縮而聞名的。如果我得到SVG數據加上它的元數據並將它作爲BLOB
存儲在Oracle數據庫中,我有一種感覺,這可以工作。我聽說Oracle表甚至可能增長到TB,可能是因爲分區或某種碎片。但總的來說,對於一個Oracle表達到20GB,包含文本,我認爲這將是很多數據。
現在,我的問題,從所有的上述調查結果出來了:
1.爲什麼開發商保持選擇的圖像文件系統存儲,而不是SVG,這在我(可能天真)的思想,是SVG可以作爲文字處理,因此可以被壓縮,加密,消化,拆分,易存儲等?
2.什麼複雜性是有當一個應用程序使用的圖像完全爲SVG,SVG提供服務給瀏覽器,而不是實際的圖像文件?
3.這在技術上是更多的內存干擾到網絡服務器:從文件系統讀取提供圖片文件(.png,.JPG,.GIF),並提供圖片爲SVG(可能是從一個數據庫,或從中間層),特別是在重加載,Facebook的一個示例場景?
4. SVG在不同「縮放」或分辨率下渲染時似乎不會失去質量,爲什麼仍然沒有開發人員在圖像動態應用程序中使用SVG?我的意思是,在從PNG,JPG或GIF轉換爲SVG
時,是否存在已知的質量損失?
5.對於存儲高度持久的元數據以及持久化的SVG數據,我是否像使用Oracle/MySQL Cluster那樣使用RDBMS非常天真?
請突出,並提供有關大的圖像存儲格式你的建議。由於
編輯/ UPDATE
有喜歡Image Magick工具,提供處理圖像的命令行選項。我可能需要的最重要的想法是這樣的:可以CouchBase服務器(?是否single server
或version 2.0
能夠在「用戶體驗可接受的性能」,或在「社交網絡規模」的服務形象)
工具像圖像magick:http://www.imagemagick.org/script/convert.php提供格式轉換的命令行選項。就像我說過的,我從來沒有用過很多圖像(這就解釋了'天真')。你可能不需要提醒我我的天真:)但謝謝你的回答 – 2012-07-16 13:36:11
@MuzaayaJoshua - 這就是我以爲你的意思。在提交SVG作爲One True Format之前,嘗試使用'convert'將JPG轉換爲SVG並查看輸出。如果它像PS轉換過程一樣,'imagemagick'將通過使用位域將柵格「轉換」爲矢量。這並沒有給你任何一個矢量的好處(可伸縮分辨率,小文件大小等)。我已經有了處理條形碼的一些經驗,我可以告訴你,imagemagick生成的矢量/程序比使用位圖嚴格得更糟,儘管正確生成的矢量/程序不會。 – Inaimathi 2012-07-16 16:19:22