什么是NoSql? NoSql的目的是什么?我在哪里可以获得NoSql上足够的材料?

时间:2010-11-11 13:01:32

标签: nosql

它与Mysql的关系如何?我正在搜索书籍和材料,如果有人请提到书籍或链接....

我打算学习NoSql ...所以请在学习之前向我建议一些我们需要的东西?

任何人都可以解释使用MySql和NoSql之间的明显区别吗?

是否有任何工具可以将MySql数据库迁移到NoSql数据库?如果有人知道程序或相关材料,请帮帮我.....

提前致谢...

4 个答案:

答案 0 :(得分:14)

NoSQL是一类不支持SQL(结构化查询语言)的数据库引擎,以实现与SQL灵活性不兼容的性能或可靠性功能。

这些引擎通常提供一种查询语言,它提供SQL可以执行的操作的子集,以及一些其他功能。可用的SQL子集完全取决于引擎,但不支持JOINTRANSACTIONLIMIT和非索引WHERE的常见问题。

因此,将现有软件从标准SQL数据库引擎移植到NoSQL引擎将需要重写所有该软件中的查询,并且可能还需要对应用程序逻辑进行一些更改本身(由于缺乏LIMIT x OFFSET y支持,在CouchDB中无法有效地执行“显示第25页,共25页”的典型示例)。

维基百科有一个很好的list of NoSQL engines

对NoSQL的普遍共识似乎是,如果您的软件的某些特定部分将受益于特定NoSQL引擎所允许的改进的性能,可靠性或可伸缩性,并且不使用该引擎中不可用的任何功能,那么迁移可能会被考虑。将整个现有的SQL驱动的应用程序的完整性移到NoSQL上是相当罕见的。

某些NoSQL引擎具有自动从SQL导入的功能,但使用NoSQL会产生一些架构约束,这些约束取决于您对数据执行的操作,因此手动编写的从SQL导入过程通常是唯一的无论现有进口商如何解决方案。

(最后,MySQL与NoSQL没有任何关系.MySQL只是一个关系数据库实现的名称。由于它实现了SQL,它当然不是NoSQL数据库。)

答案 1 :(得分:11)

NoSQL vs SQL实际上是权衡利弊 NoSQL优于传统的SQL数据库,因为它们放弃了某些RDBMS功能,以获得其他性能,可伸缩性和开发人员可用性功能。

NoSQL放弃了什么(因NoSQL产品而异):

  
      
  • 实体之间的关系(如表格)。因此,您通常无法在查询中将表或模型“加入”。
  •   
  • 有限的ACID交易。一个或多个表/实体的读一致性和原子写/提交能力的级别因NoSQL引擎而异。
  •   
  • 没有像SQL这样的标准域语言来表达即席查询。每个NoSQL都有自己的API,有些NoSQL供应商的ad-hoc查询功能有限。
  •   
  • 结构较少且严格的数据模型。 NoSQL通常会在应用程序层和开发人员强制/给予更多责任来定义架构 - 也就是“读取架构”而不是写入。
  •   

NoSQL获得了什么:

  
      
  • 更容易在群集中分片和分发数据(因为您在上面放弃了什么)。这可以提供更高的读/写可伸缩性。
  •   
  • 可以在更便宜的商品硬件(以及云端)上部署,更经济地增加社交性。
  •   
  • 不需要那么多前期DBA类型的支持。但是如果你的NoSQL变得很大,无论如何你都会花很多时间做管理工作。
  •   
  • NoSQL具有更宽松的数据模型,因此您可以在文档或名称/值列集中组织较稀疏的数据集和可变数据集。数据模型并不像硬连线那样。
  •   
  • 架构迁移可以更容易,但会增加应用层的负担,以适应数据模型的变化。
  •   
  • 根据您正在构建的应用程序类型,NoSQL可以使您更容易上手,因为您需要更少的时间来规划数据模型。因此,为了收集高速和可变数据,NoSQL可能很棒。但是对于ERP应用程序的建模,它可能不太适合。
  •   

NoSQL没有条子子弹有许多不同的NoSQL引擎,每个引擎都有自己独特的专长和优缺点。通常,您应该将NoSQL视为补充数据存储引擎,而不是RDBMS / SQL的完全替代,但这取决于您的应用程序和功能环境。

关系数据库也随着新的混合NoSQL(如MySQL引擎)和 NuoDB VoltDB (有些人称之为NewSQL)等产品试图将RDBMS桥接到云和分布式架构领域。

答案 2 :(得分:2)

NoSql是一类不同于传统关系数据库(如MySql)的数据库管理系统,因为数据不是使用固定的表模式存储的。其主要目的是作为巨大的网络规模应用程序(亚马逊,谷歌,Facebook等)的数据库系统,它们的表现优于传统的关系数据库。

一个很好的信息来源:NOSQL Databases

答案 3 :(得分:0)

基本上,当数据的性质不需要关系模型时,NoSQL数据库管理系统在处理大量数据时非常有用。数据可以是结构化的,但是真正重要的是使用NoSQL来存储和检索大量数据的能力,而不是元素之间的关系。

用法示例可能是将数百万个键值对存储在一个或几个关联数组中,或存储数百万个数据记录。该组织对于不断增长的元素列表(如Twitter帖子或来自大量用户的Internet服务器日志)的统计或实时分析特别有用。