Atitit.nosql api 标准化 以及nosql数据库的实现模型分类差异

Atitit.nosqlapi标准化以及nosql数据库的实现模型分类差异

1.常用的nosql数据库MongoDBCassandra1

1.1.查询>db.blogposts.find({"author.name":"Jane"})1

1.2.保存saveinsert1

1.3.Updatedelete2

1.4.MongoDB与RDBMSWhere语句比较2

1.5.MongoDBOR条件2

1.5.1.实例3

1.6.AND和OR联合使用3

2.对比4

3.参考5

1.Keyword

Zaijson中实现表达式的表达,用json来表示sql的表达式

2.常用的nosql数据库MongoDBCassandra

举例2:在一个关系型数据库中,一篇博客(包含文章内容、评论、评论的投票)会被打散在多张数据表中。在MongoDB中,能用一个文档来表示一篇博客,评论与投票作为文档数组,放在正文主文档中。这样数据更易于管理,消除了传统关系型数据库中影响性能和水平扩展性的“JOIN”操作。

2.1.查询>db.blogposts.find({"author.name":"Jane"})

2.2.保存saveinsert

>db.blogposts.save({title:"MyFirstPost",author:{name:"Jane",id:1},
comments:[{by:"Abe",text:"First"},239); font-size:10.5pt">{by:"Ada",text:"Goodpost"}]})

2.3.Updatedelete

作者::绰号:老哇的爪子全名::AttilaxAkbarAlRapanui阿提拉克斯阿克巴阿尔拉帕努伊)汉字名:艾龙,EMAIL:1466519819@qq.com

转载请注明来源:http://blog.csdn.net/attilax

2.4.MongoDB与RDBMSWhere语句比较

如果你熟悉常规的SQL数据,通过下表可以更好的理解MongoDB的条件语句查询:

操作

格式

范例

RDBMS中的类似语句

等于

{<key>:<value>}

db.col.find({"by":"菜鸟教程"}).pretty()

whereby='菜鸟教程'

小于

{<key>:{$lt:<value>}}

db.col.find({"likes":{$lt:50}}).pretty()

wherelikes<50

小于或等于

{<key>:{$lte:<value>}}

db.col.find({"likes":{$lte:50}}).pretty()

wherelikes<=50

大于

{<key>:{$gt:<value>}}

db.col.find({"likes":{$gt:50}}).pretty()

wherelikes>50

大于或等于

{<key>:{$gte:<value>}}

db.col.find({"likes":{$gte:50}}).pretty()

wherelikes>=50

不等于

{<key>:{$ne:<value>}}

db.col.find({"likes":{$ne:50}}).pretty()

wherelikes!=50

2.5.MongoDBOR条件

MongoDBOR条件语句使用了关键字$or,语法格式如下:

>db.colfind(

{

$or:[

{key1value1},key2value2}

]

}).pretty()

2.5.1.实例

以下实例中,我们演示了查询键by值为菜鸟教程或键title值为MongoDB教程的文档。

({:[{"by":"菜鸟教程""title""MongoDB教程"}]}).(){

"_id"ObjectId("56063f17ade2f21f36b03133"),

"title",251); font-size:9pt">"description""MongoDB是一个Nosql数据库""by""url""http://www.runoob.com""tags""mongodb""database""NoSQL"

],251); font-size:9pt">"likes"100}>

2.6.AND和OR联合使用

以下实例演示了AND和OR联合使用,类似常规SQL语句为:'whereurl='http://www.runoob.com'AND(by='菜鸟教程'ORtitle='MongoDB教程')'

({"likes"$gt:50[{}

3.对比

Cassandra教程资料较为少,crud语句类似sql了。。不是nosql了。。


MongoDB的资料多,更加容易oo

不过百度查询MongoDB百度为您找到相关结果约3,110,000

Cassandra的数量是mongodb的俩被。。

Hbase百度为您找到相关结果约6,000

至于hbase,文档少,貌似比较复杂不好用。

4.下图是NoSQL家族的进化图,我们可以看到这样的进化:Key-Value时代,BigTable时代,Document时代,全文搜索时代,和Graph数据库时代:

(陈皓注:注意图中SQL说的那句话,NoSQL再这样发展下去就是SQL了,哈哈。)

数据模型的进化:

·Key-Value键值对存储是非常简单而强大的。下面的很多技术基本上都是基于这个技术开始发展的。但是,Key-Value有一个非常致命的问题,那就是如果我们需要查找一段范围内的key。(陈皓注:学过hash-table数据结构的人都应该知道,hash-table是非序列容器,其并不像数组,链接,队列这些有序容器,我们可以控制数据存储的顺序)。于是,有序键值(OrderedKey-Value)数据模型被设计出来解决这一限制,来从根本上提高数据集的问题。

OrderedKey-Value有序键值模型也非常强大,但是,其也没有对Value提供某种数据模型。通常来说,Value的模型可以由应用负责解析和存取。这种很不方便,于是出现了BigTable类型的数据库,这个数据模型其实就是map里有map,map里再套map,一层一层套下去,也就是层层嵌套的key-value(value里又是一个key-value),这种数据库的Value主要通过“列族”(columnfamilies),列,和时间截来控制版本。(陈皓注:关于时间截来对数据的版本控制主要是解决数据存储并发问题,也就是所谓的乐观锁,详见《多版本并发控制(MVCC)在分布式系统中的应用》)

Documentdatabases文档数据库改进了BigTable模型,并提供了两个有意义的改善。第一个是允许Value中有主观的模式(scheme),而不是map套map。第二个是索引。FullTextSearchEngines全文搜索引擎可以被看作是文档数据库的一个变种,他们可以提供灵活的可变的数据模式(scheme)以及自动索引。他们之间的不同点主要是,文档数据库用字段名做索引,而全文搜索引擎用字段值做索引。

Graphdatamodels图式数据库可以被认为是这个进化过程中从OrderedKey-Value数据库发展过来的一个分支。图式数据库允许构建议图结构的数据模型。它和文档数据库有关系的原因是,它的很多实现允许value可以是一个map或是一个document。

4.0.0.1.NoSQL数据模型摘要

本文剩下的章节将向你介绍数据建模的技术实现和相关模式。但是,在介绍这些技术之前,先来一段序言:

NoSQL数据模型设计一般从业务应用的具体数据查询入手,而不是数据间的关系:

关系型的数据模型基本上是分析数据间的结构和关系。其设计理念是:“WhatanswersdoIhave?”

NoSQL数据模型基本上是从应用对数据的存取方式入手,如:我需要支持某种数据查询。其设计理念是”WhatquestionsdoIhave?”

NoSQL数据模型设计比关系型数据库需要对数据结构和算法的更深的了解。在这篇文章中我会和大家说那些尽人皆知的数据结构,这些数据结构并不只是被NoSQL使用,但是对于NoSQL的数据模型却非常有帮助。

数据冗余和反规格化是一等公民。

关系型数据库对于处理层级数据和图式数据非常的不方便。NoSQL用来解决图式数据明显是一个非常好的解决方案,几乎所有的NoSQL数据库可以很强地解决此类问题。这就是为什么这篇文章专门拿出一章来说明层级数据模型。

4.1.下面是NoSQL的分类表,也是我用来写这篇文章时做实践的产品:

Key-Value存储:OracleCoherence,Redis,KyotoCabinet

类BigTable存储:ApacheHBase,ApacheCassandra

文档数据库:MongoDB,CouchDB

全文索引:ApacheLucene,ApacheSolr

图数据库:neo4j,FlockDB

5.参考

排名前十的SQLNoSQL数据库-CSDN.NET.htm

8天学通MongoDB——第一天基础入门-一线码农-博客园.htm

MongoDB查询文档菜鸟教程.htm

分布式Key-Value存储系统:Cassandra入门.htm

Cassandra2.x中文教程(2):执行简单的CQL操作屁民部落.htm

NoSQL数据建模技术-CSDN.NET.htm

HBase使用教程-推酷.htm

相关文章

文章浏览阅读752次。关系型数据库关系型数据库是一个结构化的...
文章浏览阅读687次,点赞2次,收藏5次。商城系统中,抢购和秒...
文章浏览阅读1.4k次。MongoTemplate开发spring-data-mongodb...
文章浏览阅读887次,点赞10次,收藏19次。1.背景介绍1. 背景...
文章浏览阅读819次。MongoDB连接失败记录_edentialmechanisn...
文章浏览阅读470次。mongodb抽取数据到ES,使用ELK内部插件无...