我已经听到很多的谈论模式(常常分布)的数据库系统,CouchDB,SimpleDB,等等。

虽然我可以理解,他们可能会是有价值的,对于一些目的,在我的大多数应用中,我试图保持对象,有一特定数目的领域的特定类型,并且我认为只是自动的关系的模型。我一直在想方面的行具有独特的整数id,null/not null领域,SQL数据类型,并选择的查询,以查找集。

虽然我吸引到的分布的性质和容易JSON/Rest的接口,这些新系统,我不明白如何松散类型key/value哈希将有助于我与我的发展。为什么一个松散的类型、架构的系统是很好的保持干净的数据集?我怎么能例如,找到所有项目的日期之间的x和y的时候他们可能没有日期?是否有任何概念的一个加入吗?

我了解许多系统都有自己的差异和优势,但我想知道在差异的范例。我想这是一个不限成员名额的问题,但也许是社会的回答和方式他们已经亲眼见过这些系统的优点将有助于启发我和其他人有关的时候我会想到使用这些(公认的更多的髋关节)系统而不是传统的RDBMS。

有帮助吗?

解决方案

我就打电话给出一个或两个常见的原因(我敢肯定,人们会写作文的答案)

  1. 与高度分布式系统中,任何给定的数据集可能分散在多个服务器上。当发生这种情况,关系限制其数据库引擎可以保证大大减少。 一些 你引用完整性将需要加以处理应用程序的代码。这样做的时候,你很快就会发现几个痛点:

    • 你的逻辑是分散在多个层(应用程序和数据库)
    • 你的逻辑是横跨多种语言(SQL和应用语言的选择)

    结果是,逻辑小封的,小便携式,并且更加昂贵的改变。许多开发者发现自己编写更多的逻辑中的应用程序的代码和更低的数据库。采取极端情况下,数据库架构变得无关紧要。

  2. 模式管理特别是在系统停机时间不是一个选择—是困难的。减少的模式的复杂性减少,难度。

  3. 酸不会的工作非常及对于分布式系统(基地, , 等等)。SQL语言(和整个关系模型,在一定程度上)是优化事务酸的世界。因此,一些SQL语言功能和最佳做法是无用的,而其他人实际上是有害的。一些开发商感到不舒服的关于"对粮食"和更喜欢下降SQL完全赞成的一种语言,其目的是从地上爬起来,对于他们的要求。

  4. 费用:最大的关系型数据库系统不是免费的。领导人在标(Oracle、Sybase SQL服务器)的所有商业产品。在处理大("网络规模")系统、数据库的许可费用可以满足或超出硬件费用!费用高到足以改变通常的建造/购买考虑大幅度为建立一个定制的解决方案上的一个开放源码软件的提供(所有重要非sql服务开放源码软件)

其他提示

无架构是伟大的原因有两个:

  1. 大脑优化的直观性文件的储存
  2. 解决了 疏矩阵实体属性的价值 储存的问题。

我用SQL和没有-SQL为生产应用程序中。我不是一个数据库的专家和我必须承认谷歌上搜索酸和类似的条款,因为他们不是我熟悉的.

"啊哈!另一种知道-什么都没有趋势追随者跳上最新潮流"你可以说的。但是,实际上,我真的很高兴与我的决定使用MongoDB在我们最近2年的旧应用程序和在这里就是为什么...

翻侧的大脑优化的直觉是我的经验与世电子商务系统。我不想砸它,因为它使我受益匪浅的时间,但它真的打的处理器很难试图计算的属性,对于每一种产品。其根本原因是实体属性的价值储存的产品数据。缓或者被诅咒的解决方案。

主要优势对我来说是优化的唯一的地方,真正重要的 你自己的大脑.因此,许多技术都批评其效率的存储、处理器、硬件和尚未有一个数据库,这是非常直观的理解带来了自己的案情。我们已经找到了快速增加新的功能要我们的代码,因为该数据库只需看起来很像真实的世界,我们正在建立模型。当我问电子商务客户为本,我与他们的产品名单,他们自然会倾向于使用Excel(认为表商店)。第一列是容易的:

  1. 商品名称
  2. 价格
  3. 产品类型(

然后它变得更加困难和复盖中注意到,颜色编码,并链接到其它表格(是的..关系)

  1. 颜色(只有某些产品的)
  2. 大小(X大,大型、小型)仅为产品的8'9'10、高尔夫球俱乐部使用不同的规模
  3. 色彩2.猫的项圈有两张彩色的选择。
  4. 固定类型的(男、女)

让它结束在一个可怕的混乱的Excel表格,即使没有意识到我并没有多少意义的工作人员的产品,一天又一天。我们把我们的武器在空气和决定要去通过目录,然后它撞我!那岂不是很棒,如果你能储存数据,因为它出现在目录中!?只有集中的记录在每个产品,只是列出了属性的产品。然后你可以挑选出的共同属性指数,用于检索在稍后的日期。当然,这是一个文档存储。

在摘要、文件存储是伟大的时候你有一个疏矩阵问题或对象,改变他们的属性。具有生活在一个没有SQL世界上2年,我不能想象一个真实世界的应用程序,没有这些功能,因为世界自己看起来像一个文档存储。

首要关注的应该是你需要什么你的数据做。如果你有一个庞大的数据集,并正在寻找一个传统的RDBMS是一个瓶颈,那么你可能想用一个无模式或AA的 NOSQL 溶液。

大多数环境中,我知道使用 NOSQL 解决方案也以某种形式使用RDBMS解决方案或时尚。基于关系型数据库的解决方案是在数据的完整性是非常重要的规范,你需要ACID事务。但是,如果你的系统没有高度的交易基础,但你需要扩展或向外扩展真正的快,一个 NOSQL 解决方案可能是期望的。

我只打了MongoDB的,但有一两件事是真正让我感兴趣了,你怎么能窝文件。在MongoDB中的文件基本上是一样的记录。这是非常好的,因为传统上,在RDBMS,如果你需要拉一个“人”的记录,并得到相关的地址,工作单位信息等你经常要到多个表,连接起来,使多个数据库调用。在NoSQL的解决方案像MongoDB的,你可以窝在相关的记录(文件),而不必与外键,连接,多个数据库调用一塌糊涂。一切与一个记录被拉动相关联。

此与处理对象时是尤其方便。你可以在很多情况下只是存储的对象为一系列嵌套的文件。

NoSQL数据库不是无模式;模式被嵌入在数据中。他们是正常调用半结构化。在一些KV数据存储,然而,该模式甚至可嵌入代码。半结构化方法的优点是双重的:灵活性,其中列的行(一行可以具有5列和另一具有5组不同的列的一部分,和灵活性的列(例如,可变长度)的特性

通常的吸引力是万金油的 - 大多数人favourising他们没有关于关系定理线索和制作专业人士呕吐的水平说话SQL。不知道什么酸性条件是,EHY它们是重要的等等。

不是说他们没有有效的用途....只是说,大多吸引力的人不知道他们应该知道什么和做愚蠢的结论。同样,不是每个人都这样,但大多数开发商有利于他们是 - 他们理解什么是数据库系统实际上可以负责也不好

scroll top