如何设计这样的NoSQL数据库

问题描述 投票:0回答:1

我想创建一个简单的应用程序为自己使用DynamoDB。我从来没有使用过的NoSQL上的先进水平,只能在这里和那里存储的值。

该应用程序是一个记录器。我将记录的东西,迪纳摩将记录日期和次数的一天。

例如,一个用户登录今天的许多东西它只是说,今天的日期和logged_times:5

那么我就可以有一个查询抢过去一周/天/月之内等所有logged_times的总和

我的问题是你如何构建一个的NoSQL数据库,这样做是有效的?

database nosql amazon-dynamodb
1个回答
0
投票

NOSQLdb的几个概念

  1. 写同样应摊开的主键。
  2. 读同样应摊开的主键。

自带的明显的事情在脑海中寻找特定问题和dynamodb模式是

有键logs作为主键和timestamp作为次要密钥。而要做到聚合使用

select * where pk=logs and sk is_between x and y

但这将违反这两个概念。我们一直写在单人PK,总是从同读。

现在这个特定的问题,我们的PK应该是足够随机的(所以没有hot keys)和足够的确定性(这样我们就可以查询)

我们将不得不作出一些假设有关应用程序而设计的键。假设我们决定,我们将每小时更新一次。因此可以有7-JAN-2018-17作为密钥。其中,17指17小时。这主要是确定的,但它不是足够随机。并在1月7日每一次更新或读大多会去同一个分区。为了使键随机我们可以使用散列算法中如MD5计算散列它。比方说,服用后哈希,我们的关键变成1sdc23sjdnsd。如果你正在寻找在表中的数据,这将没有任何意义。但是,如果你想知道的7-JAN-2018-17事件计数你只是凑的时间和从与hashkey dynamodb做一个GET。如果你想知道的所有7-JAN-2018,你可以做重复24获取并汇总计数的事件。

现在这种模式将有问题的地方

  1. 如果你决定从每小时改为分钟计算。
  2. 如果你的大多数查询是运行时间一样让我去年2,4,6天的所有数据。这将意味着太多往返分贝。这将是时间和成本效率低下。

经验法则是,当查询模式被明确定义,使用NOSQL和存储性能方面的原因的结果。如果你正在尝试做的查询上的NoSQL的加入或聚集的排序,这是力基础上的技术选择适合您的使用情况。

您还可以查看存储的时间序列数据的aws recommendation

© www.soinside.com 2019 - 2024. All rights reserved.