Ruby on rails RubyonRails/Merb作为数十亿记录应用程序的前端
我正在为一个用RubyonRails或Merb编写的应用程序寻找一个后端解决方案,以处理具有数十亿条记录的数据。我有一种感觉,我应该使用分布式模型,而现在我看到的是 与 在我看来,HBase解决方案存在问题——ruby支持不是很强,Couchdb还没有达到1.0版本 你有什么建议你会使用如此大的数据量Ruby on rails RubyonRails/Merb作为数十亿记录应用程序的前端,ruby-on-rails,couchdb,hadoop,merb,hbase,Ruby On Rails,Couchdb,Hadoop,Merb,Hbase,我正在为一个用RubyonRails或Merb编写的应用程序寻找一个后端解决方案,以处理具有数十亿条记录的数据。我有一种感觉,我应该使用分布式模型,而现在我看到的是 与 在我看来,HBase解决方案存在问题——ruby支持不是很强,Couchdb还没有达到1.0版本 你有什么建议你会使用如此大的数据量 数据需要相当快的导入,有时一次导入30-40Mb,但导入将分块进行。因此,大约95%的时间数据将是只读的。人们使用了许多不同的解决方案。根据我的经验,这实际上更多地取决于与该数据相关的使用模式,
数据需要相当快的导入,有时一次导入30-40Mb,但导入将分块进行。因此,大约95%的时间数据将是只读的。人们使用了许多不同的解决方案。根据我的经验,这实际上更多地取决于与该数据相关的使用模式,而不是每个表的行数 例如,“每秒发生多少次插入/更新。”这样的问题将影响您决定选择哪种后端数据库解决方案
以谷歌为例:实际上并不存在满足其需求的存储/搜索解决方案,因此他们基于Map/Reduce模型创建了自己的解决方案。后端将取决于数据以及如何访问数据
但是对于ORM,我最有可能使用DataMapper并编写自定义DataObjects适配器来访问您选择的任何后端。根据您的实际数据使用情况,MySQL或Postgres应该能够在正确的硬件上处理数十亿条记录。如果您的请求量特别大,那么这两个数据库都可以跨多个服务器进行复制(并且读复制非常容易设置(与多个主/写复制相比) 将RDBMS与Rails或Merb结合使用的最大优点是,您可以访问访问这些类型数据库的所有优秀工具支持
我的建议是在几个这样的系统中实际分析您的数据,并从中获取数据。关于HBase和其他类似项目的警告(我对CouchDB一无所知——我认为它根本不是一个db,只是一个键值存储):
如果您的公司财力雄厚,请查看Vertica、AsterData和Greenplum提供的服务。我不确定CouchDB不在1.0版本与此有什么关系。我建议您对其进行一些测试(只需生成10亿个随机文档)看看它能不能坚持。我想说会的,尽管没有具体的版本号 CouchDB在对数据进行分区/分片等方面会给您带来很大帮助,似乎它可能适合您的项目——特别是如果您的数据格式将来可能会更改(添加或删除字段),因为CouchDB数据库没有模式 CouchDB中也有很多针对阅读量大的应用程序的优化,根据我的经验,这是它真正的亮点所在