当前位置: 首页 > 面试题库 >

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

段干昊然
2023-03-14
问题内容

我正在使用Java和Cassandra数据库开发与“论坛”相关的Web应用程序

我需要为存储用户详细信息的行和另一组存储用户发布的内容的行构造“键”。

一种选择是获取Java语言提供的随机生成的UUID,但它们的长度为16个字节。而且由于NoSQL数据库涉及大量的非规范化,所以我担心如果密钥可以较小的大小生成是否会浪费大量的磁盘空间,RAM和其他资源。

我需要生成两种类型的密钥,一种用于用户,另一种用于用户发布的内容。

对于用户发布的内容,这将
timestamp+userId是一个很好的关键。timestamp内容发布的服务器时间在哪里,userId指的是用户行的键。

任何建议,评论表示赞赏..

谢谢马科斯


问题答案:

这是分布式应用程序吗?

然后,您可以使用一个简单的同步计数器,并在启动时使用下一个可用的ID对其进行初始化。

另一方面,数据库应该能够处理java创建的UUID哈希。这是用于创建像sessionIds这样需要唯一的东西的标准。您的问题有点相似,因为您上下文中的会话将代表一组用户输入。



 类似资料:
  • 设计工具 所有的数据库设计必须采用PowerDesigner 16.5进行设计 设计规范 所有的表、字段,code必须采用英文命名,不允许采用中文拼音或者缩写。表的name必须为中文命名。 所有的表必须包含id(VARCHAR2 128 BYTE)、create_time(DATETIME,自动更新)、last_update_time(DATETIME,自动更新)三个字段

  • 问题内容: 我正在使用Ruby on Rails 3.0.7和MySQL5。在我的应用程序中,我有两个数据库表,即TABLE1和TABLE2,并且出于性能原因,我对TABLE2中的某些数据进行了非规范化,因此我在该表中重复了TABLE1的值。现在,在TABLE1中,我需要更新一些涉及的值,当然,我还必须在TABLE2中正确地更新非规范化的值。 我该如何以高效的方式更新这些值? 也就是说,如果TAB

  • 我正在尝试在DynamoDB中实现像Instagram和Facebook这样的点赞和评论系统 我有3个表,user,photo和photo_likes 用户表和照片表具有user_id和photo_id键。

  • 我阅读了cassandra数据建模,除了非规范化数据可能会发生变化之外,一切都很清楚。我如何同步它?当用户电子邮件更改时,更新的方法是什么: < code>groupname是组的一部分,数据模型中的用户可能不知道任何组,因此在用户更改后无法更新电子邮件。 下面描述的解决方案是否合适? 向用户模型中添加一列(类型

  • 1、主键约束 主键列上没有任何两行具有相同值(即重复值),不允许空(NULL); 2、唯一性约束 保证一个字段或者一组字段里的数据都与表中其它行的对应数据不同。和主键约束不同,唯一性约束允许为null,但是只能有一行; 3、唯一性索引 不允许具有索引值相同的行,从而禁止重复的索引和键值; 4、三者的区别 约束是用来检查数据的正确性; 索引是用来优化查询的; 创建唯一性约束会创建一个约束和一个唯一性

  • 非规范化数据不存储规范化的数据。换句话说非规范化意味着相同数据的多个拷贝同时存在。 上一章中,我们在帖子中非规范化评论总数,以避免每次都加载所有的评论。在数据建模意义上说这是冗余的,因为我们可以通过计数每个评论,随时计算出该总数(当不考虑运行速度)。 非规范化通常意味着额外的开发工作。在例子中,我们每次添加或删除评论时,还需要同时更新相关的帖子,以确保 commentsCount 字段保持准确。这