Cassandra 和聚合数据
Cassandra and aggregated data
我们有一个 "legacy" SQL 基于服务器的应用程序,用于保存 OLTP 数据(销售):
- OLTP数据结构非常复杂
- 我们仍然必须将其作为报告的来源
- 通过 OLTP 结构的报告非常慢
- 因此我们准备并保留实际的 "OLAP" 浏览量,例如每天的销售额,每个浏览量实际上是 MS SQL 数据库中的一个 table
主要问题:当我们需要一个新视图时,扫描所有现有的 OLTP 数据需要花费大量时间。
现在我们想迁移到 Cassandra,我们应该使用相同的方法来实现相同的目标还是:
- 也许我们最好使用像 Spark/Kylin 这样的工具,他们能做这样的事情吗?
- 是否可以通过某种方式改变方法?
这可能不是您要查找的答案。但是,我只想分享我们在 cassandra 和聚合数据方面的经验。在我们的项目中,我们需要从世界各地的服务器收集数据并进行相应的聚合。一些指标是每台服务器、每个地理区域每小时的消息等。因此,一旦有新数据进入,它将自动启动批处理以执行聚合或将数据插入多个 tables/views。我们使用 apache-spark
作为处理引擎,此外,我们还根据特定用例使用了 cassandra 中的一些概念,例如 materialized view
、secondary index
、custom trigger
。设计数据模型的一个重点是忘记 NF,基本上,我们一般在 NoSQL 中不需要它。
简而言之,我可以说从传统数据库迁移到 NoSQL 数据库一开始可能会很麻烦。但最终的结果在性能和可用性方面还是比较令人满意的。
我们有一个 "legacy" SQL 基于服务器的应用程序,用于保存 OLTP 数据(销售):
- OLTP数据结构非常复杂
- 我们仍然必须将其作为报告的来源
- 通过 OLTP 结构的报告非常慢
- 因此我们准备并保留实际的 "OLAP" 浏览量,例如每天的销售额,每个浏览量实际上是 MS SQL 数据库中的一个 table
主要问题:当我们需要一个新视图时,扫描所有现有的 OLTP 数据需要花费大量时间。
现在我们想迁移到 Cassandra,我们应该使用相同的方法来实现相同的目标还是:
- 也许我们最好使用像 Spark/Kylin 这样的工具,他们能做这样的事情吗?
- 是否可以通过某种方式改变方法?
这可能不是您要查找的答案。但是,我只想分享我们在 cassandra 和聚合数据方面的经验。在我们的项目中,我们需要从世界各地的服务器收集数据并进行相应的聚合。一些指标是每台服务器、每个地理区域每小时的消息等。因此,一旦有新数据进入,它将自动启动批处理以执行聚合或将数据插入多个 tables/views。我们使用 apache-spark
作为处理引擎,此外,我们还根据特定用例使用了 cassandra 中的一些概念,例如 materialized view
、secondary index
、custom trigger
。设计数据模型的一个重点是忘记 NF,基本上,我们一般在 NoSQL 中不需要它。
简而言之,我可以说从传统数据库迁移到 NoSQL 数据库一开始可能会很麻烦。但最终的结果在性能和可用性方面还是比较令人满意的。