1

我正在开发一个关于媒体归档、搜索、上传、分发以及处理 BLOB 的系统。

我目前正在尝试找出处理 BLOB 的最佳方法。对于具有大量内存和巨大磁盘的高端服务器,我的资源有限,但我可以访问大量中等性能的现成计算机并将它们连接到 Internet。

因此,我决定将 BLOB 存储在中央关系数据库中,因为在最坏的情况下,我将拥有一个非常重的数据库实例,可能在单个普通机器上。不是一个选择。

将 BLOB 作为文件直接存储在文件系统上并将其路径存储在数据库中也有些难看,并且必须手动管理分发,自己跟踪不同的副本。我什至不想接近那个。

我查看了 CouchDB,我真的很喜欢他们基于点对点的设计。这将允许我在 Internet 上运行分布式机器集群,这意味着:

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

因此,如果我没记错的话,可以这样总结:Cloud like API and self-managed,distributed,replicated system

系统的其余部分执行任何普通 Web 应用程序所做的正常工作:处理会话、安全性、用户、搜索等。对于这一部分,我仍然想使用关系数据模型。(CouchDB 声称不能替代关系数据库)。

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

您认为这种方法有问题吗?我错过了什么重要的东西吗?你能想出更好的解决方案吗?

谢谢!

4

3 回答 3

3

您可以将 Amazon 的关系数据库 SimpleDB 和 S3 与SimpleJPA一起尝试。SimpleJPA 是 SimpleDB 之上的 JPA 实现。SimpleJPA 使用 SimpleDB 作为关系结构,使用 S3 存储 BLOB。

于 2009-07-18T19:59:17.840 回答
2

看看MongoDB,它支持以高效的格式存储二进制数据,而且速度非常快

于 2009-07-23T09:21:01.530 回答
0

没问题。我做了一个与那个非常相似的设计。您可能还想看看 HBase 作为 CouchDB 的替代方案和自适应对象模型架构模式,作为管理数据和元数据的一种方式。

于 2009-07-18T19:40:28.643 回答