数字化转型给企业带来了无尽的数据。在数据为王的时代,数据就是金钱。数据库,顾名思义,就是数据的仓库。如何存储数据,如何检索数据,如何让数据高效流动,如何保证数据安全等。都是数据库要解决的问题。换句话说,因为有如此多的数据需要访问,所以需要一个数据库。
但是在存储、查询、安全等方面都不可能做到极致。而且在市场上,不同类型、不同规模的公司对数据库的要求也不一样,所以市场上出现了各种各样的数据库。
2020年,中国数据库的市场结构将以关系型数据库为主,市场份额约为90%。关系数据库最重要的特性是ACID,它是
原子性:数据库的所有操作要么被执行,要么被回滚。
一致性:每个事务操作看到的数据是一致的。
隔离:当并发访问多个事务时,这些事务是隔离的,互不干扰。
持久性:为了防止意外,比如断电导致的数据丢失,数据库保证事务所做的更改将永久保存,不会回滚。
前三名的关系数据库分别是Oracle、MySQL和SqlServer。总的来说,关系数据库的优点是安全、易懂、易用。
但是关系型数据的缺点也很明显:读写性能差,并发性弱,不易横向伸缩。随着大规模互联网业务的兴起,NoSQL数据库开始普及。
非关系数据库(NoSQL)的特点是速度快、效率高,可以方便地维护和处理海量数据,实现数据的分布式部署,支持高并发。所以现在很多企业把关系数据库和非关系数据库一起使用。当然,关系型数据也在努力改进,试图增强自身系统的海量数据并行处理能力。例如,一个中国团队开发的TiDB将关系数据库与NoSQL结合起来。而且CockroachDB兼容PostgreSQL。
NoSQL目前有四种数据库类型:键值数据库,如Redis;面向文档的数据库,如MongoDB;宽列存储/列族数据库,如Cassandra;面向图形的数据库,如二级。
不同类型的数据库解决不同场景中的问题。例如,Redis经常用于缓存。存储用户不常更改但请求非常频繁的数据。比如在淘宝首页,我们需要根据用户id查询相应推荐商品的配置信息。这种基于键值查询的数据结构非常适合redis。
MongoDB适合存储在嵌入式数组中的数据。比如订单物流信息,这个查询可以读出订单的所有变化。比如朋友圈的信息流。
其实从上面两个例子可以看出,NoSQL数据库现在在业务上起到了缓存的作用,方便了前端的高并发访问。比如淘宝的首页,显示的商品数据都是从NoSQL数据库中找出来的,然后每隔一段时间就从关系数据库中同步新的缓存,这样就减轻了关系数据库的访问压力。
最后,我们可以预见,多种数据库的结合将成为常态,企业需要针对具体的业务场景选择不同的数据库。在使用的过程中,会总结出更多的经验和教训,需要企业不断关注。