关系型数据库的核心就是SQL,也就是关系,有很严谨的数学基础-关系代数,能很好的呈现现实世界的复杂联系。
最重要的特性就是对事务的支持,也就是ACID,这是由Jim Gray提出的,他因此荣获1998年度的图灵奖。
这种数据库,比较适合传统的企业,以及电商公司,也就是交易型。
NoSQL,存储的是key-value对,存储模型相对简单,容易扩展,比较适合简单的业务。
把任务分解,发往各台服务器,然后个台服务器之间通过分布式文件系统共享数据,底层通过一个存储结构来存储数据,这样就能适应并发量和IO的高要求。
对于有超大量并发的网站,比如facebook,就很适合,当然有这么大并发量的公司,全世界也没几个。
前天去面试,那个公司之前用的mongodb,他们说会有丢数的问题,今天上网查了一下,还真能查到不少丢数的问题。看来这是一个普遍的问题,说明mongodb在这方面还需要不断的改进,否则,就只能用于一般的互联网方面,不太适合对数据质量和安全要求较高的业务。
另外,之前看了一些DB2的资料,里面提到DB2的一个重要特性DPF,就是数据库分区特性。一个数据库中的某个表可能超大,通过这个特性,能实现把这个表的数据自动水平分布到多台服务器,多台服务器之间通过网络文件系统来共享数据,当然,底层的数据结构,还是采用B树实现。
下面是一个访谈,写的非常好:38期:NoSQL专家王涛访谈:为什么我们还要做一个NoSQL?
ITPUB名人堂第38期:NoSQL专家王涛访谈:为什么我们还要做一个NoSQL?
http://www.itpub.net/thread-1812251-1-1.html