我有3个jpg图像(150px * 150像素,<10k)
我已将文件夹分成子文件夹,以便能够在Windows资源管理器中查看它们... - 当我拉链或解压缩时,需要超过10个小时 - 当我在亚马逊s3上加载这些图片时,这是噩梦,......
所以我想知道!那个NoSQL数据库怎么样比如PostgreSQL呢?我会以JSON格式存储我的所有图片{'name':'image01.jpg','12WFHSKFHDKSFFISNKSADNXKLSJ ...... KDJHHDJSHFGF'}
这样可以将所有图片存储在一个独特的文件中(无需压缩或解压缩)并且管理起来非常简单
我已经看到mongodb有可能(比如$ gridFS-&gt; storeFile(“FileName.jpg”,array(“_ id”=&gt; $ id));)
似乎用Postgresql不可能做到这一点......我可以找到关于在postgres中存储图像的任何信息(JSON)
好的,我迷路了......帮助:(
答案 0 :(得分:2)
正如Abelisto所写,PostgreSQL首先是关系数据库。但是最近它引入了许多有用的noSQL添加,包括有效的JSON存储和索引支持。
如果您有兴趣在PostgreSQL中存储,您肯定可以使用JSON。在这种情况下,对于文件内容,只需将其内容转换为Base64编码,并在读取期间执行解码。
但只要你有严格的文档结构,最好引入一个像[name varchar(255),content bytea]这样的结构的表,并将你的文件存储在表中。这不会强制您使用Base64编码对文件进行编码/解码 - 您只需将内容作为字节数组。
答案 1 :(得分:0)
你要做的事情是行不通的。
将所有图片存储在1个唯一文件中
在PostgreSQL中,即使您使用JSON数据类型,您仍然限制在大约GB大小。
让我问你另一个问题:你有没有将图像存储在数据库中的具体原因 - 关系或NoSQL?每次你必须获取其中一个图像时,这似乎是一个巨大的开销。
答案 2 :(得分:0)
此任务的MongoDB实现的优点是可以轻松地在多个服务器和分片上复制数据,这样可以轻松实现水平扩展(如果磁盘空间不足,只需部署一个碎片)。问题是,如何将高性能的MongoDB与其他noSQL解决方案进行比较。另请注意,您无法在直接Mongo中存储单个大小> 16 Mb的图像,但使用GridFS,您当然可以绕过此限制。因此,如果您的文件都小于16 MB BSON文档大小限制,请考虑将文件手动存储在单个文档中,而不是使用GridFS(可以利用BinData数据类型),