2009-07-18 68 views
1

我正在开发一个关于媒体归档,搜索,上传,分发和处理BLOB的系统。将关系和基于文档的“数据库”结合起来

我目前正试图找出如何处理BLOB的最佳方式。对于拥有大量内存和大容量磁盘的高端服务器,我的资源有限,但我可以访问大量中等性能的现成电脑,并将它们挂接到Internet上。

因此,我决定不的BLOB的中央关系数据库,因为我会再有,在最坏的情况下,一个非常沉重的数据库实例,可能是一个平均的机器上。没有选择。

直接在文件系统上存储BLOB作为文件并将它们的路径存储在数据库中也有点难看,并且分发将不得不手动管理,并且自己跟踪不同的副本。我甚至不想接近这一点。

我看着CouchDB,我非常喜欢他们的基于对等的设计。这将让我在互联网上运行的机器的分布式集群,意味着:

  • 低成本硬件
  • 分布的冗余和故障转移的开箱
  • 轻量级REST接口

所以如果我说得对,我可以这样总结:像API和自我管理,分布式,复制系统的云

系统的其余部分完成普通Web应用程序的常规工作:处理会话,安全性,用户,搜索等。对于这部分我仍然想使用关系数据模型。 (CouchDB声称不是是关系数据库的替代品)。

因此,我将拥有关系数据库中的所有标准数据,包括BLOB的元数据,但BLOB本身在CouchDB中。

您是否看到这种方法存在问题?我错过重要的东西吗?你能想出更好的解决方案吗?

谢谢!

回答

3

你可以试试Amazon的关系数据库SimpleDB和S3以及SimpleJPA。 SimpleJPA是SimpleDB上的一个JPA实现。 SimpleJPA将SimpleDB用于关系结构,S3用于存储BLOB。

0

没问题。我做了一个非常相似的设计。您可能还想看看HBase作为CouchDB和Adaptive Object-Model架构模式的替代方案,以此来管理您的数据和元数据。

2

看看MongoDB,它支持一个有效的格式存储二进制数据是令人难以置信的快速

+1

蒙戈也更接近于关系模型,所以你也许可以只使用脱身,而不是沙发+关系。 – kristina 2009-08-05 20:40:34

相关问题