我正在使用 Java 和 Cassandra 数据库开发与讨论论坛相关的 Web 应用程序。
我需要为存储用户详细信息的行和存储用户发布的内容的另一组行构造“键”。
一种选择是获取 Java 语言提供的随机生成的 UUID,但这些 UUID 长度为 16 个字节。而且由于 NoSQL 数据库涉及严重的非规范化,我担心如果可以以较小的大小生成 key ,我是否会浪费大量磁盘空间、RAM 和其他资源。
我需要生成两种类型的 key ,一种用于用户,另一种用于用户发布的内容。
对于用户发布的内容,timestamp+userId
是一个很好的 key 。其中 timestamp
是发布内容的服务器时间,userId
是指用户行的键。
任何建议,评论表示赞赏..
谢谢 马科斯
最佳答案
这是一个分布式应用程序吗?
然后您可以使用一个简单的同步计数器,并在启动时使用下一个可用 ID 对其进行初始化。
另一方面,数据库应该能够处理由 java 创建的 UUID 哈希值。 这是创建诸如 sessionId 之类的东西的标准,这些东西需要是唯一的。 您的问题有些相似,因为您的上下文中的 session 代表一组用户输入。
关于java - 为高度非规范化的 NoSQL 数据库设计唯一键(主键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4873616/