关系型数据库,把 TA 想象成一张 Excel 表格就可以了哦。TA 有这么个特点,就像一个人的个人信息一样(姓名、性别、身高、籍贯等),每个人的数据都是格式化的,每个人的信息都可以被填入表中。
如果有一个人有些特殊信息,比如有一个人有尾巴,你并不能记录到数据库当中,因为并没有是否有尾巴这个字段。
下面就来介绍下非关系型数据库,也常常被成为NOSQL 数据库,NOSQL 有的人解释为不需要 SQL,也有人解释为Not Only SQL,最核心的一点就是 NOSQL 数据库一般都是 Key-Value 形式的,它的查询不需要 SQL 语句支持。
我们举个KV 数据库的例子:
在这个数据库当中,像很多系统一样,主键,也就是 Key,为手机号码。值,也就是 Value 为一个字符串,如果你看过我以前写过的文章,你应该可以看到 Value 是一段Json 字符串,而且每条记录里面记录的东西都不同(对于扩展性,相比关系型数据库强到不知哪里去了),对于不需要的字段数据,绝不冗余。
查询的时候不用 SQL,怎么查询呢,因为数据库为 Key-Value 数据库,所以只能通过 Key 来查询,也就是输入手机号,数据库返回那段 Json 数据。其实整个非关系型数据库的理解非常简单,重要的是 TA 的意义。
首先,是效率的升,据说 KV 数据库查询效率要高于 SQL 好几倍。另外,好处就是扩展性,TA 不像关系型数据库一样,存入数据必须按照格式按照套路存储。如上所述,只要定义了 Key,数据库是不关心 Value 是什么的,这就使整个数据库不用在束缚于字段的设计。
最后,这种数据库是未来的趋势,而且大多数都免费,并且 Json 数据格式应该已经成为互联网最流行的数据格式,对 Java 以及 JavaScript 都极其友好。至于关系型数据库和 NOSQL 数据库之间如何选择,还是要根据具体情况决策的,但是未来 NOSQL 数据库应该会成为主流,因为我已经看到了好多数据库改造与升级都开始用 NOSQL 数据库了。