需要建议:这是一个'NoSQL'数据库的好用例吗?如果是这样,哪一个?

Ala*_*ody 10 ruby database ruby-on-rails nosql

我最近一直在研究NoSql选项.我的方案如下:

我们从世界各地的远程位置收集和存储来自定制硬件的数据.我们每15分钟记录一次每个站点的数据.我们最终希望每1分钟一次.每条记录有20到200个测量值.设置硬件记录并每次报告相同的测量值.

我们面临的最大问题是我们从每个项目中获得一组不同的测量结果.我们测量大约50-100种不同的测量类型,但是任何项目都可以具有任何数量的每种类型的测量.没有可以容纳数据的预设列集.因此,我们在系统上设置和配置项目时,使用所需的确切列创建和构建每个项目数据表.

我们提供工具来帮助分析数据.这通常包括更多计算和数据聚合,其中一些我们也存储.

我们目前正在使用一个mysql数据库,每个客户端都有一个表.表之间没有关系.

NoSql看起来很有希望,因为我们可以存储一个project_id,时间戳,然后其余部分不会被预设.这意味着一个表,数据中的更多关系,但仍然处理各种测量.

'NoSql'解决方案适合这项工作吗?如果是这样的?

我一直在调查MongoDB,看起来很有希望......

澄清示例:

项目1记录了5个数据点,mysql表列如下:时间戳,温度,风速,降水,辐照度,风向

项目2有3个数据点记录mysql表列:timestamp,temp,irradiance,temp2

Ric*_*son 4

简单的答案是,此类问题没有简单的答案,找出适合您场景的唯一方法就是投入研发时间。

这个问题很难回答,因为OP没有阐明性能要求。许多客户的记录数似乎为 75M/年,写入率为 num_customers*1 分钟(较低),但我没有所需的读取/查询性能的数据。

实际上,您已经拥有一个使用水平分区的片数据库,因为您将每个客户存储在单独的表中。这很好,并且会提高性能。但是,您尚未确定存在性能问题,因此需要对其进行测量并评估问题的大小,然后才能修复它。

NoSQL 数据库确实是解决传统 RDBMS 性能问题的好方法,但它不会提供自动可扩展性,也不是通用的解决方案。您需要找到性能问题的解决方案,然后设计 (nosqL) 数据模型来提供解决方案。

根据您想要实现的目标,我会考虑MongoDBApache CassandraApache HBaseHibari

请记住,NoSQL 是一个模糊的术语,通常包含

  • 读取或写入性能密集型的应用程序。通常会牺牲读取或写入性能而牺牲对方性能。
  • 分布和可扩展性
  • 不同的持久性方法(RAM/磁盘)
  • 更加结构化/定义的访问模式使临时查询变得更加困难。

因此,首先我会看看传统的 RDBMS 是否可以使用所有可用的技术来实现所需的性能,获取一份High Performance MySQL 的副本并阅读MySQL Performance Blog

修订版1:

根据您的评论,我认为可以公平地说,您可以使用上述 NOSQL 引擎之一实现您想要的目标。

我的主要建议是设计和实现您的数据模型,您目前使用的数据模型并不正确。

因此,请查看实体属性值模型,因为我认为它完全适合您的需求。

在考虑使用哪种技术之前,您需要先建立正确的数据模型,老实说,动态修改架构并不是数据模型。

我会使用传统的 SQL 数据库来验证和测试新的数据模型,因为管理工具更好,并且在细化数据模型时通常更容易使用模式。