NOsql与Mysss一起 - 与Cassandra一起构建模式

时间:2010-11-03 07:06:03

标签: mysql nosql cassandra

以下是事实:

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

-

1 个答案:

答案 0 :(得分:3)

让我们回顾一下:

  

我们每天都有很多(L O T)数据。

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

  

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

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

  

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

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

  

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

这些数据库中的大多数都有一些“数组作为基本类型”的概念。 CouchDB和MongoDB都将对象存储为JSON,因此很容易看到客户如何拥有一组电子邮件而无需“连接表”。 MongoDB还提供“原子更新”功能,如“$ addToSet”,可以很好地与数组配合使用。

  

我们阅读了70%的时间,而且我们写了30%的时间   可扩展性可能是一个问题,但它现在不是,虽然可用性是关键

主要的NoSQL DB都设计为 scale 。 (包括读写)

可用性的唯一方法是通过硬件和位置冗余(与MySQL或其他数据库没有区别)。尽管版本号较低,但许多大型公司正在生产环境中使用这些数据库,因此涵盖了许多简单案例。它仍然是处女地,但我们也经历了“当没有任何改变时随机崩溃”阶段。

  

速度是我们正在寻找的... Schema less noSQL似乎很有吸引力。你会推荐什么,你实施了什么?

我们在MongoDB中拥有100多个灵活的用户记录。个人寻求的表现真的很棒。

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

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

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