写点什么

关于数据库应用的一些思考

用户头像
石云升
关注
发布于: 6 小时前
关于数据库应用的一些思考

数字化转型给企业带来了无穷尽的数据,在数据为王的时代,数据就是金钱。而数据库,顾名思义就是数据的仓库。数据怎么存,怎么取、如何让数据高效的流动,怎么保证数据安全等等,这些都是数据库要解决的问题。也可以说,因为有这么多数据要存取,所以才需要数据库。

 

但想要在存储、查询、安全等各方面做到极致是不可能,而且在市场上,不同类型,不同规模的公司对数据库的需求也不一样,所以市场上才会出现各种数据库。

 

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 数据库里查出来的,然后每隔一段时间从关系型数据库里同步新的缓存,这样就减少了关系型数据库的访问压力。

 

最后,我们可以预见的是,多个数据库组合使用会成为常态,企业需要针对特定业务场景选择不同的数据库,在使用的过程中,会总结出更多经验教训,这些都是企业需要持续关注的。

发布于: 6 小时前阅读数: 5
用户头像

石云升

关注

做时间的朋友,用文字记录成长。 2017.11.30 加入

InfoQ签约作者、年度最佳内容作者、年度功勋人物、1周年最具人气top7 微信公众号:石云升SYS 职场、成长、学习等相关问题,欢迎你留言和我交流。遇到喜欢的文章记得点赞,评论。

评论

发布
暂无评论
关于数据库应用的一些思考