gpt4 book ai didi

mongodb - 复合分片键如何读取数据

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

我正在考虑在键值数据库中对数据库进行分片的策略。我已经阅读了很多关于分片的文档和文章,但没有在哪里解释过当我们使用复合分片键时我们如何读取数据。我有几个与键值数据库中的分片算法相关的问题。

1) 在 Key-Value noSQL 数据库中使用复合键进行分片是个好主意吗?根据我的观点,我可以说这不是一个好主意,因为我们不知道客户端想要在我的键值数据库系统中存储什么样的数据集。如果我错了,请分享您的想法。

2) 假设第一个答案是肯定的那么我如何在查询数据时读取数据?假设我使用了复合片键来存储数据,那么如果只根据一个字段来查询数据,我该如何读取数据。

示例:

{
log_type: <string>, // one of "warn", "notice", "error"
application: <string>,
message: <string>,
created_on: <integer> // timestamp when created
}

假设我在这里使用了 (message+logtype+application) 复合键,那么读写操作在技术上是如何工作的。这是我的主要问题。

任何人都可以用我的例子解释一下吗?

如有任何帮助,我们将不胜感激。

最佳答案

您混用了太多术语和技术。首先,您需要选择您的持久存储技术(如果我需要选择您在问题中标记的 NoSQL 之一,通常是 Mongo)。

Mongo 不是键值存储,而是面向文档的存储(文档基本上是序列化对象),其分片基于索引属性。详细了解如何配置 sharding in Mongo on its official docs .

另一方面,Redis 是一个纯键值存储,其中值可以是列表、哈希和集合等数据结构(和其他,它只是一个摘要)。在 Redis 中,分片基于使用大括号标记键:my:{key}:whatever。任何标记有 {key} 的键都将存在于同一个分片中。还可以了解有关 Redis 中分片的更多信息 on its official docs .

无论如何,当您询问在 NoSQL 世界中使用复合键是否是一个好主意时,我认为您需要花时间了解 NoSQL 方法与关系数据库有何不同。您不应该以这种方式考虑您的解决方案,您也不能将 NoSQL 视为一种通用方法,因为每个 NoSQL 数据库的工作方式不同,并且您选择的 NoSQL 技术需要您仔细考虑建模以正确的方式处理您的数据

NoSQL 只是它不是关系

关于mongodb - 复合分片键如何读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32589725/

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