我最近一直在学习RavenDB并希望能够使用它。RavenDB - 规划可扩展性
我想知道人们在可扩展的方式下构建系统时有什么建议或建议,特别是分散在不同服务器上的数据,但可以在单个服务器上启动,只能根据需要增长。
建议,甚至可能在单个实例上创建多个数据库并在其上实施分片。那么扩展它只是将这些数据库分布在机器上的问题?
我的第一印象是这种方法可行,但我会很乐意听到别人的意见和经验。
更新1:
我一直在想这个问题。我认为我之后“整理出来”的方法的问题在于,在这种情况下,在我看来很难在整个服务器上均匀分布数据。我不会有一个字符串键,我可以在范围内(A-E,F-M ..)它将用数字完成。
这留下了两个选项,我可以看到。要么在边界上分解它,所以1-50000在碎片1上,50001-100000在碎片2上,但是随着年龄的增加,像这样说,你的原始碎片将会减少很多工作。或者,如果您需要将文档移动到新的分片,它会更改密钥并打破使用该密钥的URL,但是一个轮回盗取分片并将分片ID放入密钥的策略会受到影响。
所以我的新想法,我再次发表评论,将从第一天开始创建一个分拣系统。它的作用就像将碎片ID填充到密钥中一样,但是你可以从一个很大的数字开始,比如说1000,它可以平均分配。然后,当需要将负载分成碎片时,可以说将存储区501-1000移动到新的服务器上,并写入碎片逻辑,使1-500进入碎片1,501-1000进入碎片2.然后,当第三台服务器联机后,您可以选择另一个存储桶并进行调整。
在我看来,这使您能够分裂成最初创建桶的尽可能多的碎片,从数量和年龄两方面均匀分布载荷。无需更改密钥。
想法?
感谢您的自动分片链接,我没有看到。我想我后来把它整理出来的麻烦在于,我想要一种能够在服务器之间平衡数据的策略,而不是一个填满一台服务器的策略,然后再转移到下一个。这引发了在添加新文件时在分片之间移动文档的问题。所以我想在可能的情况下提前做出规划。 – 2011-05-16 08:10:10
我用这个主题的新思想更新了这个问题。你对这种方法有什么想法? – 2011-05-17 05:17:38
我不确定你为什么需要这一点。您可以随后添加分片,并且RavenDB将为您完成这项工作。 – synhershko 2011-05-17 07:52:29