本文不讨论SQLite,这玩意儿差不多就是充当XML配置来使用的,就是软件的一些配置可以用它来存,虽然它读写速度很快,但是它很多数据库的必要性(完整事务)没有支持,衡量数据库的指标也不只是读写性能,最后,项目怎么适合怎么用吧,也没有特别限制。
SQLite劣势:
1.写入粒度粗,写入是全表排它锁,会锁定其他连接的写操作直到完成写入,所以高并发下要完蛋。
2.基于文件I/O的,直接读写db文件,缺乏管理和优化,没有网络连接数据库这层,缺乏安全性。
SQLite优势:
1.基于文件IO,速度快。
2.简单,不用配置,移动端和嵌入式端最好用了。
其他数据库基于网络连接,所以瓶颈主要会卡在网络IO上。所以会觉得慢。
首先,数据库选型,应当考虑以下问题:
1.对数据一致性(ACID)的要求如何(要求越高,越不合适使用MySQL),如果是支付相关,更应该是Oracle
2.对数据保护的要求如何(要求越高,越不合适使用MySQL)
3.数据的读写比如何(越高,越需要考虑使用MySQL)
4.数据的规模如何 (数据规模较小是使用MySQL即可,中等规模时,Oracle可能更加经济,规模很大时,需要从整个架构层面来考虑)
5.业务变化的频繁程度如何(频繁变化的业务,意味着频繁的数据结构变更,意味着使用MySQL的相对成本越高)
6.自身的技术能力如何(Oracle的第三方服务更好,自身没有比较NB的技术能力,还是使用成熟产品Oracle比较合适)
当然,关系型数据库的诞生之初,主要是为了企业设计的,因为企业内部系统需求变化不快,所以用基于二维表结构的关系型数据库(RDBMS)很合适,而随着今年互联网大数据等Web应用,才催生了一堆NoSQL数据库(非关系型),因为数据结构更加灵活,更加适合需求变化快的场景。
例子:
如果是内网项目,每天同时也就几百个终端,那么MySQL就是不错的选择。当下火热的创业Web应用互联网公司也多用MySQL,用户不算多也是显而意见的
当然最后,估计也有可能是钱的原因(之一):
references:
https://www.zhihu.com/question/29088685
https://www.zhihu.com/question/31417262
https://www.zhihu.com/question/22798301
https://www.zhihu.com/question/21771941