关系型数据库和非关系型数据库 对比
时间:2021-07-01 10:21:17
帮助过:19人阅读
理解持久化与非持久化的区别。这么说是因为有的NoSQL系统是纯内存存储的。
你必须意识到传统有关系型数据库与NoSQL系统在数据结构上的本质区别。传统关系型数据库通常是基于行的表格型存储,而NoSQL系统包括了列式存储(Cassandra)、key/value存储(Memcached)、文档型存储(CouchDB)以及图结构存储(Neo4j)
与传统关系数据库有统一的SQL语言操作接口不同,NoSQL系统通常有自己特有的API接口。
在架构师上,你必须搞清楚,NoSQL系统是被设计用于成百上千台机器的集群中的,而不是共享型数据库系统的架构。
在NoSQL系统中,可能你得习惯一下不知道你的数据具体存在何处的情况。(习惯于可能不舒服的认识,你不知道数据的生命(大部分时间))
在NoSQL系统中,你最好习惯它的弱一致性。”eventually consistent”(最终一致性)正是BASE原则中的重要一项。比如在Twitter,你在Followers列表中经常会感受到数据的延迟。
在NoSQL系统中,你要理解,很多时候数据并不总是可用的。(习惯数据可能不总是可用的事实)
你得理解,有的方案是拥有分区容忍性的,有的方案不一定有。
原文:
Here’s their list of things to know:
- Understand how ACID compares with BASE (Basically Available, Soft-state, Eventually Consistent)
- Understand persistence vs non-persistence, i.e., some NoSQL technologies are entirely in-memory data stores
- Recognize there are entirely different data models from traditional normalized tabular formats: Columnar (Cassandra) vs key/value (Memcached) vs document-oriented (CouchDB) vs graph oriented (Neo4j)
- Be ready to deal with no standard interface like JDBC/ODBC or standarized query language like SQL; every NoSQL tool has a different interface
- Architects: rewire your brain to the fact that web-scale/large-scale NoSQL systems are distributed across dozens to hundreds of servers and networks as opposed to a shared database system
- Get used to the possibly uncomfortable realization that you won’t know where data lives (most of the time)
- Get used to the fact that data may not always be consistent; ‘eventually consistent’ is one of the key elements of the BASE model (I see this latency issue all the time in Twitter, in ‘Followers’ list)
- Get used to the fact that data may not always be available
- Understand that some solutions are partition-tolerant and some are not
These attributes vary from one system to another. It’s as important to understand the differences among NoSQL technologies as it is important to understand how they differ from a traditional RDBMS.
Here is a pretty good list of the many NoSQL products, from a respected member of the community, Alex Popescu.
4.MongoDB中的一些坑( 2.4.10 版本)
http://www.cnblogs.com/nucdy/p/7871973.html
A.CouchDB使用的开发语言为Erlang,遵循Apache许可,使用HTTP/REST协议。主要优点是可保持数据一致性和易用性,同时允许多站部署。CouchDB主要适用于积累性的、并且较少改变数据的应用。例如CRM、CMS systems等。
B.Redis使用的开发语言为C/C++,遵循BSD许可,使用Telnet-like协议。主要优点是速度极快。Redis主要适用数据集数据时常变化的应用。但内存占用较大。主要应用于金融机构、实时分析、实时数据收集、实时通信等。
C.MongoDB使用的开发语言为C++,遵循AGPL(Drivers:Apache),使用Custom,binary(BSON)协议。MongoDB适用于动态查询、且定义索引比Map/Reduce效能更佳的地方。不过与CouchDB一样其数据变动较多,需要大容量磁盘。MongoDB可在任何Mysql/PostgreSQL的环境下使用.
D.Cassandra使用的开发语言是Java,遵循Apache,使用Custom,binary(Thrift)协议。Cassandra适用于写入多于查询的场合,例如银行和金融行业等需要实时数据分析的行业。
E.Riak使用的开发语言是Erlang & C、Javascript。遵循Apache,使用HTTP/REST协议。Riak具有高容错性的特点。Riak和Cassandra非常相似。当需要高扩展性和高容错性时Riak是不错的选择。但多站点的部署需要付费。Riak适用于销售数据录入、工控系统等一些不允许宕机的场合。
F.HBase使用的开发语言为Java,遵循Apache,使用HTTP/REST协议。HBase可支持高达数十亿的列。如果你喜爱BigTable并且需要一个能提供随机实时读写访问你海量数据的数据库,HBase是不错的选择。HBase现被Facebook邮件数据库所使用。
以上收集与网络,作为学习之用。
关系型数据库和非关系型数据库 对比
标签:elements real lin import read amp 结构 html 邮件数据