SQL Databases Don't Scale (简译)
来源:互联网 发布:360安全软件管家 编辑:程序博客网 时间:2024/06/09 16:53
我经常问的一个问题是:你是如何来扩展SQL Database的?有很多的方法可以做到,比如使用缓存,共享或者用其他的技术将压力从数据库释放,但实际上我们没有。SQL Database从根本上来说是不具有扩展性的,我们也没有魔法使它忽然具有扩展性。
什么是扩展性?
必须具有几下几点:
1. 横向扩展:更多的server可以带来更高的性能。
2. 对应用程序的透明性:扩展的实现对于业务逻辑来说是透明的,逻辑上只有一个server服务于业务。
3. 单点失败不会导致故障:单个server或者节点的宕机不会导致系统的失败。
接下来,让我们看一些技术如何“扩展”SQL Database以及他们为什么没有达到以上几点。
纵向扩展
一种方法去扩展SQL Database是买更大的server或者存储。这带来的问题是:
1. 运输变的复杂
2. 原来的机器落后,升级变的浪费资源
3. 你不知道到底类似容量这样的问题会变的有多大
这个不符合扩展性的第一条。
分区,共享
根据逻辑对数据进行分区。这种方法也是纵向扩展的一种方法,它紧密依赖于应用并且你需要仔细的去计划你的schema。
这种方法对于程序来说是不透明的,必须和业务结合在一起,不符合扩展性的第二条。更严重的问题是,数据库是关系数据库,存储的数据也是相关的,这样的相关数据分布在多个server上,你需要为这样重复的关系服务,而且当他们返回时必须在客户端重新构建这样的关系。
只读的Slave
MySql的杀手级应用就是配置方便的master-slave复制,你可以用一个read-only-slave来处理你的读应用而把所有的 insert update delete都由master来处理。
这种方式是最好的扩展方式,这也是很多大型的MySql在使用的方法。对于读扩展来说这样的方法是好的,对于写扩展来说这样的效率还是不行的,而且当你维护master server的时候,也会造成整个系统的宕机。
原文:http://adam.blog.heroku.com/past/2009/7/6/sql_databases_dont_scale/
- SQL Databases Don't Scale (简译)
- SQL Databases Don't Scale
- 关系数据库不具有可扩展性(SQL Databases Don't Scale)
- CSS Don't(二十三)
- Don't Repeat YourSelf (DRY)
- SQL Programming (2): Connectiong to Databases
- [SQL server 2000] Don't build User table
- Don't Cry
- Don't use XP!
- Don't Use Select *
- Don't you worry
- 三Don't原则
- Don't Wanna Try
- don't cry
- Don't Cry
- don't cry
- Don't say goodbye
- don't say goodbye
- 歌木斯阿语词典软件评测
- dbus接口
- 老婆的使用说明书
- C++ 一些陷阱
- 定制安装 ubuntu
- SQL Databases Don't Scale (简译)
- 解决cannot run test program错误
- 用情境搜索开启未来之路
- Mysql的日期和时间函数
- GRUB在Windows分区中引导linux
- Google API介绍(转)
- 如果你喜欢编程 给想做程序员的人的7个建议
- 关于隐式转换
- (转)在VC6.0下创建自己的C函数库 收藏