【发布时间】:2011-04-05 05:55:09
【问题描述】:
这是我正在考虑的一个相对复杂的问题,因此请对您不清楚的部分提出编辑或评论。我会根据你的 cmets 更新迭代
我正在考虑开发一个 Rails gem,它可以简化分片表的使用,即使您的大部分数据都存储在关系数据库中。我相信这类似于 Quora 或 Friendfeed 中使用的概念,当他们遇到传统 mysql 的扩展时,大多数潜在的解决方案都需要大规模迁移(nosql),或者只是非常痛苦(完全坚持 w 关系)
- http://bret.appspot.com/entry/how-friendfeed-uses-mysql
- http://www.quora.com/When-Adam-DAngelo-says-partition-your-data-at-the-application-level-what-exactly-does-he-mean?q=application+layer+quora+adam+
本质上,我们如何才能继续使用 MySQL 做很多它真正擅长的事情,同时允许系统的某些部分扩展?这将允许有人开始使用 mysql/activerecord,但遇到了扩展的障碍,以便轻松扩展数据库中有意义的部分。
对于我们来说,我们在分片数据库上使用 Ruby on Rails,并在其中存储 JSON Blob。由于我们无法进行连接,因此我们正在为实体之间的关系创建表。
例如,我们有 10 种不同类型的实体。每个实体都可以使用大(分片)关系表相互链接。
表格非常简单。索引为 (Id1, Id2..., type),数据存储在 JSON blob 中。
- ID、类型、{json 数据}
- Id1,Id2,类型 {json 数据}
- Id1、Id2、Id3,输入 {json 数据}
我们在创建更高级别的接口以存储关系数据的一系列数据集方面投入了大量工作
对于任何给定的类型,您可以定义一种存储类型——(值、未加权列表、加权列表、带 guid 的加权列表)
我们为它们中的每一个都有更高级别的接口 - 查询、排序、时间戳比较、交集等。
这样,如果有人意识到他们需要扩展数据库的特定部分,他们可以保留大部分基础设施,并且只将他们需要的表移动到这个分片数据库中
你的想法是什么?如上所述,我很想知道你们的想法
【问题讨论】:
标签: mysql ruby-on-rails scalability nosql