Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有任何库或组件处理用户生成内容的存储和快速检索?_Java_Data Storage_User Generated Content - Fatal编程技术网

Java 是否有任何库或组件处理用户生成内容的存储和快速检索?

Java 是否有任何库或组件处理用户生成内容的存储和快速检索?,java,data-storage,user-generated-content,Java,Data Storage,User Generated Content,考虑到拥有一个庞大且活跃的用户群,其中每个用户都希望存储一个配置文件图片和一些额外的图像或其他工件,是否存在允许轻松存储和查询此类数据的库或框架 一个参考实现将是Facebook的 以下特征很重要 数据存储应该可以很好地扩展:添加资源对于使用存储的应用程序应该是透明的(有一个关于的答案) 能够在存储的数据旁边添加一些元数据 元数据可以以良好的性能进行查询(例如存储在Lucene/Solr等可配置索引中) 基于密钥的快速访问和一些中间缓存层 欢迎对可以轻松集成到JavaWeb应用程序中的库或框

考虑到拥有一个庞大且活跃的用户群,其中每个用户都希望存储一个配置文件图片和一些额外的图像或其他工件,是否存在允许轻松存储和查询此类数据的库或框架

一个参考实现将是Facebook的

以下特征很重要

  • 数据存储应该可以很好地扩展:添加资源对于使用存储的应用程序应该是透明的(有一个关于的答案)
  • 能够在存储的数据旁边添加一些元数据
  • 元数据可以以良好的性能进行查询(例如存储在Lucene/Solr等可配置索引中)
  • 基于密钥的快速访问和一些中间缓存层
欢迎对可以轻松集成到JavaWeb应用程序中的库或框架提出任何建议


更新:谢谢你的前几个答案。我必须更详细地说明预期的答案类型,虽然不是java相关的,但是非常好(刚刚投票通过)。有可能实现一个文件系统访问和DB相结合的解决方案,并在其中添加一些层缓存,但我认为这是浪费时间,如果比我更合格的人已经设计、实现并运行一个更好的解决方案。基于具有底层DB或JCR实现的解决方案的东西非常适合,但实现其他基础架构不是我想要做的。

是LiveJournal使用的。但并不特别是Java。

我觉得您的需求与数据库提供的非常接近。只需确保表的设计符合您的需要(例如,您可以将像图像这样的大数据与元数据放在一个单独的表中)

将涵盖您的所有需求,包括数据库中的缓存层(并且您可以根据需要在应用程序中添加一个额外的缓存层,该层可能也用于应用程序的其余部分)。

是Java技术API内容存储库的完全一致性实现(JCR,JSR 170和283中规定)。
但是它有一些性能问题(至少在我使用的2年版本中),克服这些问题的最佳方法是将静态映像复制到Web服务器上(使用WebDAV、davfs和rsync)

我们在Fedora Commons()的媒体存储库方面取得了很好的经验,它允许您将媒体资产与其关联的元数据一起存储。我们在可扩展性或自定义方面没有任何问题,也不难用三重存储交换底层存储层(如果您的情况需要这样做)。如果您需要使用Solr为数据编制索引,则可以使用预定义的元数据字段(“RELS-EXT”)来存储基于XML的数据。

这取决于“大型活跃用户群”的量化

80%的网站可以简单地使用NoSQL无模式方法,如y_serial:

y_serial.py模块::使用SQLite存储Python对象

序列化+持久性::在几行代码中,将Python对象压缩并注释到SQLite中;然后在不使用任何SQL的情况下按时间顺序按关键字检索它们。这是数据库存储无模式数据的最有用的“标准”模块

如果每个用户的照片和工件压缩在2M以下,性能应该很好


对于剩余的20%的案例使用率,您可以轻松地将数据从yserial导入Cassandra,现在Facebook、Digg和Twitter都采用了Cassandra。

谢谢Philipp,非常好的输入!我们一定会尝试这个。