数据库场景选型
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
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
相关文章推荐
- mysql数据库允许远程访问方法
- sqlite
- sql server2005主从数据库同步配置
- windows安装 mysql
- sql server 生成万年历
- 主流数据库查找前几条数据的区别
- mysql 时间加法源码理解
- laravel-mongodb查询条件与字段类型不一致问题
- 数据库中的时间的插入与查询方法
- PL/SQL连接数据库
- oracle10g升级到oracle11g
- Oracle数据库迁移至DB2数据库
- mysql 大对象
- Oracle学习笔记(四)
- ORACLE 存儲過程發郵件
- MongoDB使用小结:一些常用操作分享
- 数据库的名称尽量要以英文开头,如果全部输数字的话可能会出错的
- MySQL的length类函数
- c#操作oracle的通用类
- windows下安装mysql5.6及基本命令