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

nosql:MongoDB、Cassandra或数据仓库的替代方案

史默
2023-03-14

我陷入了关于是否使用MongoDB或Cassandra来满足我的数据库需求的具体决定之间,并希望对我的用例进行输入以指导我的决定。

要求:

数据源

  • X个包含Y个服务器的数据中心。
  • 每个服务器有N个网络和M个统计数据。

e、 g.目前(3个数据中心、50台服务器、19个网络和10个统计数据)。这些数字会随着时间的推移而增加。

数据获取:

  • 每小时为每台服务器解析一个xml页面(约20kb/页)。(~25mb/天)

数据存储:

  • 有组织的(每小时、每天、每月)结构,使用聚合查找更高的值(小时)-

注:我们需要具备以下能力:

  • 动态添加/删除值(数据中心/服务器/网络/统计)和可扩展性是一个关键问题,因此我们正在从SQL转向非关系型数据库。
  • 可靠性也是一个高优先级(主/从,没有损坏),并且需要“简单”的可运维性。
  • 写作是每小时一次的,不需要“大量”的写作表现。

示例用例:在前端,您将像这样进行查询,选择;日期窗口、期间报告、特定数据中心、特定/所有网络、特定/所有统计信息,以及结果是汇总的还是单个的。

Example #1

 - From: August 16th 2012 -> April 16th 2013
 - Period: Daily
 - Data-center: EU A
 - Stat-type: Error
 - Servers: All

通过阅读stack overflow和web上的类似文章,我得出结论,我的最佳选择可能是MongoDB,因为它具有灵活的查询和接近关系数据库的特性。如果我的写作量更大,Cassandra似乎是一个选择——尽管我确实喜欢基于专栏的模式。我是数据库设计和管理的新手,所以易用性也是一个因素(仍然是CS学生)。

从我的用例来看,哪个NoSql数据库是最好的选择?

共有2个答案

濮阳和泰
2023-03-14

你的主题是,“nosql:MongoDB、Cassandra或数据仓库的替代品。”然而,您的描述并不完全是数据仓库。如果问题是:如何做一个合适的“数据仓库”,那么答案是这些NOSQL数据存储都没有。最好的数据仓库解决方案是无共享环境中的并行数据库(MPP)。对于查询/统计报告需求,可以使用Sybase IQ或Vertica等倒列数据库。这两种方法(MPP或倒列)都将在真正的数据仓库环境中清除NOSQL的时钟。

太叔高义
2023-03-14

你几乎把它钉在了你的结论中。为了下定决心,你主要必须在每个数据库的特权之间做出选择,即:

卡珊德拉:

  • 更好的可用性(master/master所以没有SPOF)
  • 更好的可扩展性:(线性,弹性)
  • 更好的写性能

MongoDB:

  • 更好的查询(API和原生全文搜索)
  • 易用性(各种API、XML/JSON...)

我想一致性不是什么大问题,无论如何,它们最终都是一致的。即使MongoDB可能更容易上手(更接近关系数据模型),Cassandra也没那么难,你只需要理解面向列的范式。无论如何,从技术角度来看,我想答案取决于您对系统规模增长的预期以及您的请求是否会发展。

 类似资料:
  • 我对ES很陌生。我一直在寻找数据库迁移工具,但找不到。我想知道是否有人能帮我指出正确的方向。 我会使用 Elasticsearch 作为项目中的主数据存储。我想对所有映射和配置更改/数据导入/数据升级脚本进行版本控制,这些脚本是我在项目中开发新模块时运行的。 过去,我使用Flyway或Liquibase等数据库版本控制工具。 有没有任何框架/脚本或方法可以与ES一起使用来实现类似的目标? 有没有人

  • 问题内容: 我对ES非常陌生。我一直在尝试搜索数据库迁移工具,但找不到。我想知道是否有人可以帮助我指出正确的方向。 我将使用Elasticsearch作为项目中的主要数据存储。我想对我在项目中开发新模块时运行的所有映射和配置更改/数据导入/数据升级脚本进行版本控制。 过去,我使用过数据库版本控制工具,例如Flyway或Liquibase。 我可以在ES中使用任何框架/脚本或方法来实现类似目的吗?

  • 这是为什么BigQuery在小数据集上表现不好的问题的后续问题。 假设我有一个大约1百万行的数据集。在我们当前使用的数据库(mysql)中,聚合查询的运行速度非常慢,可能需要大约10秒的时间进行复杂的聚合。在BigQuery上,所需的初始化时间可能会使此查询花费约3秒,比mysql要好,但如果我们需要在1s或更短时间内返回查询,则此工具不适合此作业。 那么,我的问题是,在对中等大小的数据集(如10

  • 我正在努力让Spring JPA Data为我工作,但一直在努力。问题出在这里。 我有两个域类,它们之间有一个简单的一对多关系: 我已经为每个类设置了存储库接口:CardRepository,扩展JpaRepository的用户存储库,两个存储库都注入到服务中 非常基本的设置。someMethod() 出现问题,其中我用它的标识符查询了一个用户,然后尝试获取映射@OneToMany的列表,然后发生

  • 在使用Spring数据存储库时发现一些奇怪的行为。 我写了这些类和接口: 当我尝试测试UserRepositoryImpl时,java。lang.StackOverflowerr被抛出 我发现save()方法存在一些问题。此外,delete()方法会引发stackoverflow。 我已经找到了解决办法。当我更改将存储库接口扩展为(例如)JpaUserRepository的接口的名称时,我的问题就

  • 主要内容:1.离线数仓,2.Lambda架构,3.Kappa架构,4.Smack架构,5.湖仓一体传统数仓 离线数仓 实时数仓 Lambda架构 Kappa架构 Smack架构 数据湖架构 仓湖一体架构 1.离线数仓 2.Lambda架构 Lambda架构是大数据平台里最成熟、最稳定的架构,它的核心思想是:将批处理作业和实时流处理作业分离,各自独立运行,资源互相隔离。 (1)Batch Laye:主要负责所有的批处理操作,支撑该层的技术以Hive、Spark-SQL或MapReduce这类批处