我将使用Cassandra从SQL转到NoSQL。
我看过Do You Really Need SQL to Do It All in Cassandra?。这说明了sql select,join,group by和order by,但是在sql数据库中没有关于“id”概念的内容。在SQL中,所有值都具有唯一标识符。
nosql / cassandra有类似的东西吗?什么?使用Cassandra进行像newId = lastId + 1
之类的事情或类似的事情是否安全?
感谢。
答案 0 :(得分:1)
ID。它是一个简单的键/值存储,您需要为您提供自己的文档ID(称为键)。建议的方法是使用UUID,它旨在避免冲突的密钥。
做newId = lastId + 1
这样的事情根本不安全。根据设计,Cassandra不支持事务,也没有办法使read + write原子化。并发事务可能会导致失败:
如果您有兴趣,Cassandra Counters可以解决此问题。
答案 1 :(得分:0)
如果你要从SQL到noSQL,另一个需要考虑的选择是playOrm
它就像那样可扩展的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密钥生成的一个例子(在一个集群中是唯一的)......