mongodb - NoSQL 是否符合报告软件的要求?

标签 mongodb postgresql cassandra nosql

我目前正在开发一个软件系统,可以导入和规范化各种格式(XML、JSON、CSV)的历史数据。截至目前,我们正在使用 SQL 服务器,并正在寻找该工具的最佳替代品(Postgres 或 NoSQL)。 90% 的时间,(存档/历史/静态)数据是通过 Web 客户端访问的,并且以只读格式使用,用户可以挑选和选择 jar 装报告。对数据的更改只是为了更新不正确的信息。

替代数据库必须能够非常快速地存储和报告数千万行,并轻松跨多个服务器扩展(数据复制、集群等)。还必须保证数据完整性,因此如果我更新一个 KPI(比方说每小时成本),那么所有依赖于该 KPI 的报告都将相应更新。

之前没有使用 NoSQL 数据库的经验,我想知道在报告软件中使用它是否是正确的选择。我们希望允许用户创建他们自己的自定义报告,这意味着能够查询任何数据而不是我们的预制报告,但我不知道这是否会带来麻烦SQL 与 NoSQL 的比较。

最佳答案

问题中的变数太多,无法轻松完整地回答,但这是一次尝试。

  • 您在 SQLNoSQL 中的选择应该基于数据结构。可扩展性通常是第二层问题,在某些 NoSQL 平台上只是稍微容易一些,但一如既往,并不总是免费的。
  • 如果您要“非常快”地查找数千万行,那么您就是在认真地测试您可以使用它执行的操作的极限。 RDBMS 会以速度为代价为您提供过多的选项,而 NoSQL 虽然以这种速度输入速度相当快,但会让您在应用程序中编写大部分 RDBMS 智能代码。选择你的毒药。
  • 更新指标并“自动”更新报告显然是一种业务逻辑智能,不应受限于平台选择。
  • PostgreSQL 在不久的过去,确实选择了很多工具来处理文件格式(JSON 等),显然值得一试(没有简单的可扩展性)。

话虽如此,您真的应该调查一下 Postgres 在其他方面被遗忘的 Assets FDW。您可以清楚地考虑使用 NoSQL 设置来摄取大型非结构化数据,然后利用 postgres 强大的语义来使用它并为您的应用程序创建一个异步但结构化的后端。如果做得好,这可能意味着两全其美。

关于mongodb - NoSQL 是否符合报告软件的要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35727881/

相关文章:

Cassandra的轻量级交易& Paxos共识算法

linux - 使用 ccm (Cassandra Cluster Manager) 创建 cassandra 集群时出错

java - 从 DBObject 读取属性

sql - 条件计数 > 0 的多对多查询

ruby-on-rails - 如何显示我已经在 Rails 中其他地方使用的数据库表中的数据

django - 无法在 heroku 上进行 RDS 查询

cassandra - 将 Cassandra 从 3.0.14 升级到 3.11.2

mongodb - 如何将 Mongodb cursorTimeoutMillis 设置为 NoT 超时?

java - 在嵌套文档中按查询分组

node.js - GeoJSON 和 Mongoose - 点只能包含数字元素