我正在使用 Cassandra 从 SQL 转到 NoSQL。
我读过你真的需要 SQL 在 Cassandra 中完成所有工作吗?. 这谈到了sql select,join,group by和order by,但是sql数据库中没有关于“id”概念的内容。在 SQL 中,所有值都有一个唯一标识符。
nosql/cassandra 有类似的东西吗?什么?newId = lastId + 1
用 Cassandra 做类似或类似的事情是否安全?如何做?
谢谢。
我正在使用 Cassandra 从 SQL 转到 NoSQL。
我读过你真的需要 SQL 在 Cassandra 中完成所有工作吗?. 这谈到了sql select,join,group by和order by,但是sql数据库中没有关于“id”概念的内容。在 SQL 中,所有值都有一个唯一标识符。
nosql/cassandra 有类似的东西吗?什么?newId = lastId + 1
用 Cassandra 做类似或类似的事情是否安全?如何做?
谢谢。
Cassandra 中不存在 ID。它是一个简单的键/值存储,您需要为您提供自己的文档 ID(称为键)。建议的方法是使用 UUID,它旨在避免键冲突。
做类似newId = lastId + 1
的事情根本不安全。Cassandra 在设计上不支持事务,也无法使读写原子化。并发事务可能会使此失败:
如果您有兴趣,Cassandra Counters会解决这个问题。
如果您要从 SQL 转到 noSQL,另一个要考虑的选项是 playOrm
它像这样执行 Scalable JQL(注意添加了分区,但除此之外,SQL 是相同的)
@NoSqlQuery(name="findJoinOnNullPartition", query="PARTITIONS p(:partId) select p FROM TABLE as p INNER JOIN p.security as s where s.securityType = :type and p.numShares = :shares"),
此外,它还会为您生成唯一的集群密钥,因此您不必总是处理密钥生成;)。playOrm 的密钥生成示例在这里(在一个集群中是唯一的)...