您的位置:首页 > 数据库

数据库场景选型

2016-03-16 15:46 281 查看
本文不讨论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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: