java - 为高度非规范化的 NoSQL 数据库设计唯一键(主键)

标签 java web-services web-applications nosql

我正在使用 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/

相关文章:

Java - 在 Linux 上放置第 3 方 JAR 并设置类路径的位置

c# - asp.net web 应用程序如何在线使用 Microsoft Access 数据库文件?

c# - 从 DateTime 中删除时间

java - 将 IntelliJ IDEA 项目导入 NetBeans?

java - 为什么 Spring Boot Application 类需要有 @Configuration 注解?

php - 如何从 mysql 数据库获取 xmlrpc 响应,如字段名称作为元素和记录作为数据?

java - 用于调用 Web 服务的 JAX-WS 异步客户端技术

java - 升级到 javaserver faces。轻松的任务?

java - 如何使用 Arquillian 模拟服务?

web-services - 如何从 Blackberry Simulator 调用 .NET Web 服务?