关于数据库应用的一些思考
数字化转型给企业带来了无穷尽的数据,在数据为王的时代,数据就是金钱。而数据库,顾名思义就是数据的仓库。数据怎么存,怎么取、如何让数据高效的流动,怎么保证数据安全等等,这些都是数据库要解决的问题。也可以说,因为有这么多数据要存取,所以才需要数据库。
但想要在存储、查询、安全等各方面做到极致是不可能,而且在市场上,不同类型,不同规模的公司对数据库的需求也不一样,所以市场上才会出现各种数据库。
2020 年中国的数据库的市场格局以关系型数据库为主流,市场份额在 90%左右。关系型数据库最重要的特性是 ACID,既
原子性(Atomicity):数据库的操作要么全部执行,要么全部回滚。
一致性(Consistency):每个事务操作看到的数据是保持一致的。
隔离性(Isolation):多个事务并发访问时,事务之间是隔离的,互不干扰。
持久性(Durability):为了防止意外事故,如断电导致数据缺失,数据库保证事务对所做的修改永久保存,不会被回滚。
关系型数据库长期排名前三的是 Oracle、MySQL、SqlServer。总体来说关系型数据库的优点是安全、容易理解,使用方便。
但关系型数据的缺点也很明显:读写性能差、并发能力不强、不易于横向扩展。而随着大型互联网业务兴起,NoSQL 数据库开始流行。
非关系型数据库(NoSQL)的特点是,速度快、效率高,可以轻松维护海量的数据和处理,可以实现数据的分布式部署,支持高并发。所以现在很多企业都是关系型数据库与非关系型数据库一起使用。当然关系型数据也在努力改进,想办法在自身系统增强海量数据并行处理的能力。比如 TiDB,一个中国团队做的,它融合了关系型数据库和 NoSQL。还有 CockroachDB 兼容了 PostgreSQL。
NoSQL 目前有四种数据库类型:键值(Key-Value)数据库,如 Redis;面向文档(Document-Oriented)数据库,如 MongoDB;列存储(Wide Column Store/Column-Family)数据库,如 Cassandra;图(Graph-Oriented)数据库,如 Neo4J。
不同类型的数据库是解决不同场景的问题。比如 Redis,经常用来做缓存。存储用户不常变动,但又请求十分频繁的数据。比如淘宝的首页,我们需要根据用户 id,查询对应推荐商品配置信息。这种根据 key-value 查询出来的数据结构,就非常适用于 redis。
MongoDB 适用那些内嵌数组形式存储的数据。比如订单物流信息,这一次查询就能将订单所有的变更读取出来。再比如,朋友圈的信息流。
其实从上面两个例子也可以看出,现在 NoSQL 数据库更多是在业务上起到缓存的作用,这样方便前端高并发的访问。比如淘宝的首页,显示的商品数据是从 NoSQL 数据库里查出来的,然后每隔一段时间从关系型数据库里同步新的缓存,这样就减少了关系型数据库的访问压力。
最后,我们可以预见的是,多个数据库组合使用会成为常态,企业需要针对特定业务场景选择不同的数据库,在使用的过程中,会总结出更多经验教训,这些都是企业需要持续关注的。
版权声明: 本文为 InfoQ 作者【石云升】的原创文章。
原文链接:【http://xie.infoq.cn/article/4a1466f9a9d40bd6b6f557ba9】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论