我正在Ruby中构建一个REST API,JRuby+Sinatra运行在特立尼达web服务器上。
API的功能之一是从数据库中获取非常大的数据集,并将它们存储在中间缓存/非关系数据库层中。这是为了在数据集的顶部执行筛选/排序/操作,而不必从数据库中重新生成数据集。
我们正在寻找一个好的/最好的解决方案来实现这个中间层。
我的想法:
- 使用像Riak这样的非关系数据库来存储数据集,并在上面有一个缓存层(比如CacheMoney)
注:
- 我们的数据集可能相当大
既然你征求意见,我就给你我的。。。我认为MongoDB将很好地满足您的需求:
http://www.mongodb.org/
几年来,我一直用它来存储大型历史数据集,这些数据集越来越大,它仍然可以胜任任务。我甚至不需要深入研究"分片"或一些高级功能。
我认为它适合您描述的应用程序的原因是:
- 它是一个索引的、无架构的文档存储,这意味着它可以非常"动态"地添加或删除字段
- 我已经将它的性能与一些SQL数据库进行了基准测试,对于大型"扁平"数据,它在某些情况下的性能要好几个数量级
- https://github.com/guyboertje/jmongo将允许您从JRuby访问MongoDB