我已经在 RDBMS 领域工作多年,但希望探索整个 nosql 运动。所以这是我的第一个问题:
有重复键的可能性是不好的做法吗?例如,一个以姓氏为键的地址簿(很可能是搜索项?)可能有多个实体。那么使用姓氏是不好的做法吗?键应该是实体的最“可搜索”的定义吗?在这个全新的世界中(对我而言),是否有任何“最佳实践”资源?
我对东京内阁(特别是 tc 界面)很感兴趣,但不知道如何遍历具有相同密钥的不同实体(例如,见上文)。我只能得到第一个实体。无论如何,提前感谢您的帮助
我已经在 RDBMS 领域工作多年,但希望探索整个 nosql 运动。所以这是我的第一个问题:
有重复键的可能性是不好的做法吗?例如,一个以姓氏为键的地址簿(很可能是搜索项?)可能有多个实体。那么使用姓氏是不好的做法吗?键应该是实体的最“可搜索”的定义吗?在这个全新的世界中(对我而言),是否有任何“最佳实践”资源?
我对东京内阁(特别是 tc 界面)很感兴趣,但不知道如何遍历具有相同密钥的不同实体(例如,见上文)。我只能得到第一个实体。无论如何,提前感谢您的帮助
这取决于 no-sql 实现。例如,Cassandra 允许范围查询,因此您可以对数据进行建模以对姓氏或全名(从姓氏开始,然后是名字)进行查询。
除此之外,许多更简单的键值存储确实需要您为多值条目存储列表结构(或类似结构)。这是否可行取决于预期的“重复”数量——我认为姓氏的数量可能相当高,因此在许多情况下它听起来并不是一个理想的模型。
在键值存储中,您不能有重复的键,键后面只有一个值。要拥有重复的键,您可以使用 Tokyo Cabinet 中的 B+ Tree 数据库,该数据库的值已排序并允许重复(您可以通过使用该键转到第一个项目并迭代来访问它们)。
并非所有问题都可以通过键值存储轻松解决,因为您需要密钥来检索项目。也许像MongoDB这样的东西更合适,因为它允许更复杂的查询。