目前,我们使用Oracle在应用程序中存储图像。但我们希望在应用程序中看到很多图像/视频。我们希望远离oracle,以便能够轻松进行分片并实现高吞吐量。有什么建议吗?
有没有人为此尝试使用Couchbase / MongoDB等NoSQL数据库?它们是否为此目的进行了优化。
我看到Cloudinary使用Amazon S3实现此目的。但我正在寻找可以在我们的数据中心部署以保护隐私的内容。
答案 0 :(得分:2)
从您的问题描述中,我无法看到任何表示赞成或反对NoSQL数据库。
在数据库中使用图片,声音或视频等媒体意味着只有一个大的未解释的二进制对象。未解释意味着:数据库可以存储和传递二进制文件,但不能对其属性进行分析,将其作为查询的基础等(为哪些数据库制作)。
关系数据库和非关系数据库都为这种BLOB提供数据类型。它们不同的特征是,例如,
表格与树状结构化数据结构 - 不适用于BLOB,因为它将是一个属性,无论它有多大,
BLOB主题未解决的各种交易逻辑(CAP定理)。
因此,我担心您的架构需要在更广泛的范围内决定,而不仅仅是考虑您的媒体数据。您的数据结构是哪些?您的查询和更新方案是哪个?
答案 1 :(得分:2)
我看到人们对Couchbase所做的是将所有关于图像的元数据存储在Couchbase中的JSON文档中,但托管图像本身是针对文件优化的。你可以获得两个世界的好处。在你提到的这种用例中,根据我的经验,NoSQL数据库将比关系数据库好得多。
管理非常大的关系数据库和NoSQL数据库中的blob,IMO在大多数情况下都是一个糟糕的想法,无论数据库类型如何。所以我wrote up this blog post就是出现这样的情况。
答案 2 :(得分:0)
当您在数据中心寻找私有部署时,您可以考虑使用MongoDB或OpenStack Swift。
我见过有人使用MongoDB gridfs(https://docs.mongodb.com/manual/core/gridfs/)存储图像/视频。 使用MongoDB gridfs的优点:
Openstack Swift是一个高度可用,分布式,最终一致的对象/ blob存储,可与您在数据中心部署的Amazon S3相媲美。 许多公司也在使用OpenStack Swift,Rackspace的Cloud Files运行Swift。你也可以看看Swift: http://docs.openstack.org/developer/swift/
答案 3 :(得分:0)
S3对隐私的承诺非常强烈。您对S3有何疑虑?另外,您打算从哪个数据中心转移Oracle存储?