标签: nosql

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

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

要求:

数据源

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

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

数据获取:

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

数据存储:

  • 使用聚合来组织(每小时、每天、每月)结构以找到更高的值(小时 -> 天)

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

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

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

Example #1

 - From: August 16th 2012 -> April 16th 2013
 - Period: Daily
 - Data-center: EU A
 - Stat-type: Error
 - Servers: All
Run Code Online (Sandbox Code Playgroud)

通过阅读堆栈溢出和网络上的类似文章,我得出的结论是,我最好的选择可能是 MongoDB,因为它具有灵活的查询和与关系数据库的接近度。如果我的写作量更大,Cassandra 似乎是一个选择——尽管我确实喜欢基于列的模型。我是数据库设计和管理的新手,因此易用性也是一个因素(仍然是 CS 学生)。

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

database mongodb cassandra nosql

3
推荐指数
1
解决办法
3716
查看次数

适用于 Android 的 Cassandra DB、它的 API 以及如何使用它?

我一直在寻找 NoSQL 数据库。在我对互联网的研究中,我发现 Cassandra DB 是使用最广泛的 NoSQL DB。我也想在我的 Android 应用程序中使用它,但没有找到有关其 Android 版本的任何信息。

有没有像 CouchDB 这样的 API 有 Ektorp 可以在 Android 中使用它?根据 Cassandra DB 的决定,我是否朝着正确的方向前进?

我需要它的 Android API 和教程来开始吗?我只在 StackOverflow 上找到了这个链接,但它对我没有帮助。

Android cassandra 客户端示例

android cassandra nosql

3
推荐指数
1
解决办法
5700
查看次数

亚马逊 dynamoDb 是否适合像系统这样的评论

我决定将 MySql 或 NoSQL 用于论坛站点。我对整个 NoSQL 想法很陌生,在阅读文档时我注意到“项目”不能大于 64kb,这包括属性和值。从我理解的方式来看,我能想到的实现这一点的唯一方法是这样的:

Posts: [
    { user: 'gates', text: 'first post'
      comment: [
        { user: 'jim', text: 'comment1',
          user: 'bobby', text:'comment2'
         }
      ]
    },
    { user: 'jim', text: 'second post' }
  ]
Run Code Online (Sandbox Code Playgroud)

这里的问题是如果一个帖子有很多评论,它会超过该项目的 64kb 限制。是否有另一种实现这种“帖子/评论关系”的方法可以很好地扩展?

sql amazon-web-services nosql amazon-dynamodb

3
推荐指数
1
解决办法
2542
查看次数

计算所有顶点的快速方法(具有属性 x)

我正在将 Titan 与 Cassandra 一起使用,并且有几个关于使用 Gremlin 查询数据库的(相关)问题:

1.) 有没有比计算所有顶点更快的方法

g.V.count()
Run Code Online (Sandbox Code Playgroud)

Titan 声称使用索引。但是如何使用没有属性的索引?

WARN  c.t.t.g.transaction.StandardTitanTx - Query requires iterating over all vertices [<>]. For better performance, use indexes
Run Code Online (Sandbox Code Playgroud)

2.) 是否有比计算属性为“myProperty”的所有顶点更快的方法

g.V.has('myProperty').count()
Run Code Online (Sandbox Code Playgroud)

再次泰坦意味着以下:

WARN  c.t.t.g.transaction.StandardTitanTx - Query requires iterating over all vertices [(myProperty<> null)]. For better performance, use indexes
Run Code Online (Sandbox Code Playgroud)

但是,我又该如何做到这一点?我已经有一个“myProperty”的索引,但它需要一个值来快速查询。

3.) 与边缘相同的问题......

nosql gremlin titan

3
推荐指数
1
解决办法
2827
查看次数

Mongo 不均匀的分片分布

最初我们的服务器从 4 个分片开始。在网站运行几年后,我们决定再添加 4 个分片来帮助减轻现有服务器的负载,现在的问题是分片分布非常不均匀,因此新服务器没有帮助减轻负载. 以下是我们较大的集合之一的分片分布示例

Shard shard0000 contains 15.56% data, 15.56% docs in cluster, avg obj size on shard : 143B
Shard shard0001 contains 15.12% data, 15.12% docs in cluster, avg obj size on shard : 143B
Shard shard0002 contains 16.73% data, 16.73% docs in cluster, avg obj size on shard : 143B
Shard shard0003 contains 15.62% data, 15.62% docs in cluster, avg obj size on shard : 143B
Shard shard0004 contains 9.31% data, 9.31% docs in cluster, avg …
Run Code Online (Sandbox Code Playgroud)

database mongodb nosql

3
推荐指数
1
解决办法
1220
查看次数

是否有AWS提供的托管mongo数据库服务?

我希望使用mongo DB作为我的项目,但不想进行管理开销来管理mongo服务.

由于我的项目目前正在AWS上托管其大部分组件,我正在寻找AWS提供的托管mongo数据库服务(如果有).

AWS提供Dynamo数据库作为托管服务,并且有很好的文档,但是通过AWS访问Mongo DB托管服务对我来说并不是很清楚.

我已经阅读了Mongo DB托管服务 - "Atlas"但不确定我是否可以在现有的AWS实例中将其作为服务访问.

请提供适合此方案的最佳实践的输入.

amazon-ec2 mongodb amazon-web-services nosql amazon-dynamodb

3
推荐指数
1
解决办法
1757
查看次数

为什么我们需要带有NoSQL数据库的Apache Kafka?

Apache Kafka是一种实时消息传递服务。它以分布式和容错的方式安全地存储数据流。在向生产者发送消息时,我们可以过滤流数据。我并不理解为什么我们需要像MongoDB这样的NoSQL数据库在Apache Kafka中存储相同的数据。真正的问题是,为什么我们将相同的数据存储在NoSQL数据库和Apache Kafka中?

我认为,如果需要NoSQL数据库,则可以首先从MongoDB中的客户端收集数据流,而无需使用Apache Kafka。但是,大多数大数据体系结构偏好在数据源和NoSQL数据库之间使用Apache Kafka。(请参阅参考资料) 还看到

对于实际系统而言,这有什么优势?

mongodb nosql apache-kafka

3
推荐指数
1
解决办法
3868
查看次数

DynamoDB一对多和多对多结构

我对DynamoDB还是陌生的,并试图理解关系。

我有一个包含用户,列表和项目的待办事项应用程序。

我创建了3个dynamoDB表,一个用于用户,一个用于列表,一个用于项目。

为简单起见,以用户/列表为例。用户的主键是userId。列表主键是listId。用户可以有很多列表。列表可以在用户之间共享,因此列表可以有许多用户。

那么,列表应该作为listId的数组保存在用户项中吗?然后,当我得到一个用户时,我遍历listId的数组并获取所有列表?

用户可以有很多列表,而列表又可以有很多项目,因此我不想将整个列表保存在用户项目中。该列表也可以被许多用户共享。

我已经尝试搜索关系,但是它们似乎都是从读者对NOSQL数据库有广泛理解的假设开始的,而我没有。

amazon-web-services nosql amazon-dynamodb

3
推荐指数
1
解决办法
4072
查看次数

如何在Firestore中查询嵌套对象

我想以以下格式存储数据:

{
   "chatName": "Football",
   "chatMembers":
   [
      {
         "userId": "nSWnbKwL6GW9fqIQKREZENTdVyq2",
         "name": "Niklas"
      },
      {
         "userId": "V3QONGrVegQBnnINYHzXtnG1kXu1",
         "name": "Timo"
      },
   ]
} 
Run Code Online (Sandbox Code Playgroud)

我的目标是让所有的聊天记录,其中在用户与签约userId是在chatMembers列表中。如果已userId登录用户的不在chatMembers属性中,则应忽略该聊天。这可能吗?

如果这不可能,那么我该如何通过子集合来实现呢?

我的开发语言是dart,但是您也可以发布其他语言的解决方案。

我目前的尝试是这样,但这不起作用:

_firestore.collection(collectionName).where("chatMembers.userId", isEqualTo: userId).snapshots()
Run Code Online (Sandbox Code Playgroud)

nosql dart firebase flutter google-cloud-firestore

3
推荐指数
2
解决办法
4057
查看次数

了解Cassandra Db中的分离

根据Cassandra文档,Cassandra中的隔离提供了行级隔离.这意味着对单个节点上单个分区内的行的写入仅对执行操作的客户端可见.

现在我假设在cassandra docs中写入它们意味着插入和更新.

我的问题是:

考虑我正在更新行的情况,同时其他用户也在更新同一行.现在由于Cassandra提供的隔离保证,我们无法确定更新行的最终状态.

从上面的陈述中可以看出我对Cassandra db中隔离的理解是否正确?

database isolation cassandra nosql cassandra-3.0

3
推荐指数
1
解决办法
102
查看次数