【问题标题】:NOsql Vs Mysql - Going schemaless with CassandraNOsql 与 Mysql - 使用 Cassandra 实现无模式
【发布时间】:2010-11-03 07:06:02
【问题描述】:

以下是事实:

  • 我们每天都会收到大量 (L O T) 数据。
  • 我们收到的每个文件都是 csv 格式,虽然有几个标头比其他标头更频繁地出现,但并没有真正的标准。
  • 要上传到 mySQL 数据库的每个文件的规范化非常耗时,并且经常促使我们更改架构(文件中出现了以前不存在的新字段..)。
  • 虽然主键是唯一的,但其他任何内容都可以复制
  • 这些是客户记录(即:电子邮件、名字、姓氏、城市、州、地址...等)
  • 我们可以为同一个人发送多封电子邮件..
  • 我们有 70% 的时间读取,30% 的时间写入
  • 可扩展性可能是一个问题,但现在不是,尽管可用性是关键
  • 速度是我们所追求的。 Mysql 太慢,无法回答表超过 5000 万条记录的查询。即使优化得很好,我们也有太多的速度问题。分解表格已成为组织关注的问题。少架构的 noSQL 似乎很有吸引力。你会推荐什么,你实施了什么? (请不要回答优化mysql ..毫无意义和离题)

--

【问题讨论】:

  • 为什么在 50+ 百万行这么少的情况下,您的查询要花这么长时间?你能发布更多信息吗???
  • 我已经使用了超过 3 亿条记录的表,而且速度非常快!我认为您的索引或查询有问题。另请注意,如果禁用所有事务性内容,MySQL 会快得多。我们使用它来编译它,但我认为某些表格格式可能会这样做。

标签: mysql nosql cassandra


【解决方案1】:

让我们回顾一下要点:

我们每天都会收到大量 (L O T) 数据。

NoSQL 解决方案基本上都是为了扩展到大量数据而创建的(Riak、MongoDB、Cassandra 等)

...比其他更频繁地重复出现的标头,并没有真正的标准...要上传到 mySQL 数据库的每个文件的规范化非常耗时,并且经常促使我们更改架构

NoSQL 绝对适合这种模型,其中许多都是“无模式”的,因此很容易存储这些额外的字段。但是,这将花费您额外的空间,因为字段名称通常与文档一起存储。

虽然主键是唯一的,但其他任何内容都可以复制

只要提供了密钥,“面向文档”和“键值”数据库就非常适合这种情况。如果您必须运行重复检查,那么大多数键值数据库都配备不足。 “面向文档”的数据库可能会稍微好一些,但不会好很多。

我们可以为同一个人发送多封电子邮件

这些数据库中的大多数都有一些“将数组作为基本类型”的概念。 CouchDB 和 MongoDB 都将对象存储为 JSON,因此很容易看出客户如何在不需要“连接表”的情况下拥有一组电子邮件。 MongoDB 还提供“原子更新”功能,例如“$addToSet”,可以很好地处理数组。

我们 70% 的时间阅读,30% 的时间写作 可扩展性可能是一个问题,但现在不是,尽管可用性是关键

主要的 NoSQL 数据库都旨在扩展。 (读写)

可用性的唯一方法是通过硬件和位置冗余(与 MySQL 或其他数据库没有什么不同)。尽管它们的版本号很低,但其中许多数据库已被非常大的公司用于生产环境,因此涵盖了许多简单的案例。它仍然是处女地,但我们也已经过了“没有任何变化时随机崩溃”的阶段。

速度是我们所追求的……无模式的 noSQL 似乎很有吸引力。你会推荐什么,你实施了什么?

我们在 MongoDB 中有 100 条 M 条灵活的用户记录。个人搜索的表现真的很棒。

但是,您必须对正在运行的查询类型保持警惕。

如果您需要运行一次带回多个用户的查询,基本上这些键值或面向文档的数据库中的任何一个都会遇到速度问题。您可能想查看 Graph 数据库或其他一些奇特的解决方案。但是,如果您的用例一次都围绕一个用户,请查看MongoDB

MongoDB 还支持原生 map-reduce,因此您可以扩展“非实时”查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2023-03-30
    • 2016-07-07
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    相关资源
    最近更新 更多