我们正在尝试将现有的rdbms迁移到nosql数据库。既然我们在数据仓库中有了代理密钥的概念,那么如何在nosql数据库中处理这些密钥呢?在将现有rdbms迁移到nosql数据库时,nosql数据库有哪些好的做法?我们正在寻找accumulo,cassandra或hbase实现。请帮忙
xytpbqjk1#
我可以说一些关于Cassandra的话,这将与任何其他键值存储有关。它的模式建模是基于查询的。因此,您需要首先考虑查询,然后根据查询创建表和键。当然,会有数据冗余和非规范化。例如,rdbms中可能有一个表同时包含自然键和代理键。但如果您习惯于使用代理键进行搜索,那么对于nosql,它将变成两个表,其中 NaturalKey->Value 以及 SurrogateKey->Value 关系。nosql只有一个键(尽管它可以包含多个列),所以代理键和自然键之间没有技术上的区别,因为它们都是“键”。唯一有用的是,您需要在cassandra中使用uuid代理键,而不是计数器(看起来与autoincrement字段非常相似)。代理键在数据仓库中的使用方式略有不同:它们用于连接事实表和维度表,但是键值dbs在rdbms方面没有连接。您可以在这里、这里和这里找到有关cassandra的数据建模和使用的更多信息。
NaturalKey->Value
SurrogateKey->Value
1条答案
按热度按时间xytpbqjk1#
我可以说一些关于Cassandra的话,这将与任何其他键值存储有关。它的模式建模是基于查询的。因此,您需要首先考虑查询,然后根据查询创建表和键。
当然,会有数据冗余和非规范化。例如,rdbms中可能有一个表同时包含自然键和代理键。但如果您习惯于使用代理键进行搜索,那么对于nosql,它将变成两个表,其中
NaturalKey->Value
以及SurrogateKey->Value
关系。nosql只有一个键(尽管它可以包含多个列),所以代理键和自然键之间没有技术上的区别,因为它们都是“键”。
唯一有用的是,您需要在cassandra中使用uuid代理键,而不是计数器(看起来与autoincrement字段非常相似)。
代理键在数据仓库中的使用方式略有不同:它们用于连接事实表和维度表,但是键值dbs在rdbms方面没有连接。
您可以在这里、这里和这里找到有关cassandra的数据建模和使用的更多信息。