gpt4 book ai didi

database - 我应该如何为分片建模数据?

转载 作者:可可西里 更新时间:2023-11-01 11:22:05 25 4
gpt4 key购买 nike

通过阅读高级文档,我对数据库分片有了概念性的理解,但我还没有阅读很多代码或自己进行任何此类黑客攻击。

this article about using Redis as a primary datastore ,作者强调

You need to design your data around sharding

我对设计标准犹豫不决:

  • 我不是很熟悉 SQL 的东西,但是如果我使用的是只知道键和值/文档的 noSQL 数据库,我的数据是否已经“可分片”了?
  • 或者值/文档是否也需要具有统一的模式?
  • 还有其他我遗漏的标准吗?

作者也提到了

The most difficult part of this is clearly defining how you segment your data [into shards]. This is a very application specific problem

  • “数据分割”与“数据设计”问题相关/相同吗?

最佳答案

Redis 中的分片本质上比关系数据库中的分片要容易得多,因为数据之间没有关系。您可以在应用程序级别定义根据您自己的算法在 Redis 实例之间分配数据的方式。你可以说它与数据设计有关。例如,您可以说实体根据其性质(数据库中的用户,另一个数据库中的产品)或或根据它们的 id(数据库中名称以 A 到 L 开头的用户,在另一个数据库中名称以 M 到 Z 开头的用户)进行分片。 .

与 Redis(以及一般的 NoSQL 数据库)一样,您必须根据请求它们的方式设计数据模型。

redis website上有一篇关于数据分区的详细文章.它将比我能写的任何答案都完整得多:)

为了它的值(value),我自己实现了一个完整的 Web 应用程序,使用 Redis 作为主要数据存储,作为最初的实验。这是一个社交网络,有一个多标准搜索引擎。我想在某个时候我必须切换到更传统的解决方案(比如添加关系数据库)。我很惊讶我没有这样做。我必须处理的每个用例(包括搜索引擎)都可以使用 Redis 轻松实现。而 Redis 让我取得了令人印象深刻的表现。但我不得不考虑很多关于数据建模的问题,哪些数据丢失是可以接受的,哪些是 Not Acceptable (并创建健壮的算法,以便能够透明地重新启动因崩溃而中断的进程),如何限制内存消耗......以及设计我的数据据此。

最后但同样重要的是,Redis Cluster正在路上,可能会为您提供分片解决方案。但它尚未准备好生产,并且与单个 Redis 实例相比将受到限制(例如每个实例只有一个数据库)。

关于database - 我应该如何为分片建模数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22279198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com