键/值(一般)和东京内阁(特定于python tc)的问题

时间:2010-01-15 00:04:59

标签: python tokyo-cabinet

我多年来一直在RDBMS世界,但希望探索整个nosql运动。所以这是我的第一个问题:

有可能重复密钥是不好的做法吗?例如,键入姓氏的地址簿(最可能是搜索项?)可以有多个实体。那么使用姓氏是不好的做法吗?应该是实体中最“可搜索”的定义的关键?在这个全新的世界里(对我来说)有“最佳实践”的资源吗?

我对东京内阁(特别是tc界面)很感兴趣,但不知道如何迭代具有相同密钥的不同实体(例如见上文)。我只能得到第一个实体。无论如何,提前感谢您的帮助

2 个答案:

答案 0 :(得分:1)

这取决于no-sql实现。例如,Cassandra允许范围查询,因此您可以对数据建模以对姓氏进行查询,或者使用全名(从姓氏开始,然后是名字)。

除此之外,许多更简单的键值存储确实需要您为多值条目存储列表结构(或类似物)。这是否可行取决于预期的“重复”数量 - 使用姓氏,我认为数字可能相当高,因此在许多情况下它听起来不是理想模型。

答案 1 :(得分:0)

在键值存储中,您不能拥有重复键,键后面只有一个值。要拥有重复键,您可以使用Tokyo Cabinet中的B + Tree数据库,该数据库具有已排序的值并允许重复(您可以通过使用该键转到第一个项目并进行迭代来访问它们。)

并非所有问题都可以通过键值存储轻松解决,因为您需要密钥来检索项目。也许像MongoDB这样的东西更适合允许更复杂的查询。