当前位置: 首页 > 知识库问答 >
问题:

如何设计这个NoSQL数据库

濮阳宜
2023-03-14

我试图为自己创建一个使用DynamoDB的简单应用程序。我从未在高级级别上使用过非关系型数据库,只是在这里和那里存储一个值。

该应用程序是一个记录器。我将记录一些东西,迪纳摩将记录日期并计算一天。

例如,一个用户今天记录多件事情,它只会说今天的日期和记录的时间:5

然后,我可以进行查询,以获取过去一周/一天/一个月内所有logged_times的总和。

我的问题是如何构造一个NoSQL数据库来完成这样的高效工作?

共有1个答案

子车心思
2023-03-14

NOSQLdb的几个概念

  1. 写入应在主键上均匀分布。
  2. 读操作应在主键上均匀分布

看到给定的问题和dyanamodb模式,我想到的最明显的事情是

将键日志作为主键,将时间戳作为辅助键。并进行聚合使用

####################################################################################################

但这将违反这两个概念。我们总是在一个pk上写作,总是从同一个pk上阅读。

现在,对于这个特定的问题,我们的PK应该足够随机(因此没有热键)并且足够确定(因此我们可以查询)

在设计密钥时,我们必须对应用程序进行一些假设。假设我们决定每小时更新一次。因此,可以将2018年1月7日-2017日作为关键日期。其中17表示17小时。这个键是确定的,但它不够随机。1月7日的每一次更新或阅读都将主要集中在同一个分区上。为了使密钥随机,我们可以使用类似md5的散列算法来计算它的散列。假设在接受哈希之后,我们的密钥变成1sdc23sjdnsd。如果您正在查看表数据,那么这将毫无意义。但是如果你想知道2018年1月7日到2017年1月7日的事件计数,你只需散列时间,然后用hashkey从dynamodb获取数据。如果您想知道2018年1月7日的所有事件,您可以重复24次获取并汇总计数。

现在这种模式在哪里会有问题

>

如果您的大多数查询都是运行时查询,请向我提供过去2、4、6天的所有数据。这将意味着到db的往返次数太多。而且时间和成本都很低。

经验法则是,当查询模式定义良好时,出于性能原因,使用NOSQL并存储结果。如果您试图在nosql上执行连接或聚合类型的查询,那么它将根据您的技术选择强制适合您的用例。

您还可以查看aws关于存储时间序列数据的建议。

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

  • 1、数据库设计最起码要占用这个项目开发的40%以上的时间 2、数据库设计不仅仅停留在页面demo的表面 页面内容所需字段,在数据库设计中只是一部分,还有系统运转、模块交互、中转数据、表之间的联系等等所需要的字段,因此数据库设计绝对不是简单的基本数据存储,还有逻辑数据存储。 3、数据库设计完成后,项目80%的设计开发都要存在你的脑海中 每个字段的设计都要有他存在的意义,要清楚的知道程序中如何去运用这

  • 本文向大家介绍NoSQL数据库,包括了NoSQL数据库的使用技巧和注意事项,需要的朋友参考一下 这些用于大型分布式数据集。关系数据库可以有效地处理一些大数据性能问题,而NoSQL数据库可以轻松解决此类问题。在分析可能存储在云的多个虚拟服务器上的大型非结构化数据时,非常有效。

  • 本文向大家介绍初识NoSQL NoSql数据库入门 NoSql数据库基础知识,包括了初识NoSQL NoSql数据库入门 NoSql数据库基础知识的使用技巧和注意事项,需要的朋友参考一下 做了一年的大一年度项目了,对于关系型数据库结构还是有些了解了,有的时候还是觉得这种二维表不是很顺手。在看过一篇文章之后,对NoSQL有了初步的了解,(https://keen.io/blog/5395834921

  • 我想了解一下这个例子,从AWS映射关系模型到nosql https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-modeling-nosql-B.html 这里强调的一个关键概念是: 重要的 .... 大多数设计良好的应用程序只需要一个表。。。 因此,示例表如下 它解释了, 您可以定义以下实体,这些实体支持关系订单条目

  • 我想模拟一个学生,老师,班级的关系。每个学生都和一个老师联系在一起(老师可以有很多学生)。只有三个班级。我认为这是三个表格: 学生桌- 教师桌 - 班级表- 我不确定如何在表格中显示师生关系。我们怎么知道哪个老师被分配给哪个学生呢?