如何对现有的键值存储进行分片?
假设我们在服务器 A 上有 3Gb 键值存储。我开始觉得我们需要另一台服务器(服务器 B)。因此,我必须通过分片(服务器 A、服务器 B)分离服务器 A 的数据,但是...服务器 A 上的所有键当前按原样表示(例如,comment_ids:user_id:10
)。
问题#1:散列当前键名称并在分片上分离所有数据的最佳实践是什么?
问题#2:向分片行添加额外服务器的最佳实践是什么?
PS:抱歉我的英语不好,但我希望我的回答对你来说是清楚的。
谢谢。
PS:我已经用redis
标签标记了这个问题,但实际上它根本不是关于redis的,而是关于所有键值存储的。
Let's suppose that we have 3Gb key-value storage on server A. I'm starting to feel that we need another server (server B). So, I have to separate server A data over shards (server A, server B), but... All keys on server A currently represented as is (for example, comment_ids:user_id:10
).
Question #1: What is the best practice to hash current key names and separate all data over shards?
Question #2: What is the best practice of adding additional servers to shard's row?
PS: Sorry for my English, but I hope that my answer is clear for you.
Thank you.
PS: I've marked this question with redis
tag, but really it's not about redis at all, but all key-value storages.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一致哈希往往是一个不错的选择 http://en.wikipedia.org/wiki/Consistent_hashing
Consistent hashing tends to be a good choice http://en.wikipedia.org/wiki/Consistent_hashing