几点学习的体会,记录下来别忘了:
1、关系数据库的发展
关系数据库就是用实体-关系模型(ER模型)来组织数据的数据库管理系统,说白了就是存数据的一个东西,只不过在无序的磁盘数据文件上以ER逻辑来表达数据的意义的一个软件。
现在流行很多新概念,云计算、hadoop hbase、nosql等等,都对关系数据库有所攻击,但我认为随着这些概念日趋冷淡下来,大家也会逐渐认识到一个道理:没有哪个数据处理方式是万能的,大家只是适用场景不同而已。当今信息化发展的趋势是数据量越来越大,结构越来越多样,应用对响应速度和可靠性要求越来越高等等。关系数据库自身也存在要适应应用发展的需求,商业数据库产品也在不断变革以适应变化,但是无法以低成本的方式适应新的需求,主要依赖于scale up来提升性能。
我认为关系数据库并不需要满足所有的应用需求,但是有两点是必须要提升的,一是提供大数据量环境下的水平扩展能力,二是提供低成本的高可用性解决方案。简单说就是搞分布式集群,保留关系模型、事务机制等关系库的特征,这是关系库核心优势,同时研究scale out的方法,提高存储的容量和访问速度;研究分布式高可靠集群方案,提高系统可用性。这是关系库未来发展的主要方向。
新系统设计要充分考虑新硬件的应用。ssd、NVM(no valarie memory)等新设备要发挥作用。
2、基本概念
事务:transaction,一个工作,具有ACID特性。a(atomicity)原子性,要末都做,要末都不做;c(consistency)一致性:我理解为数据的守恒,类似于能量守恒,数据量不会无故增加或减少;I(isolation)隔离性:事务操作时要独占有关资源,尤其是写操作,避免同时对一个资源写操作;d(durability)持久性:做了就是做了,没有其他干预绝不无故回退。
3、innodb myisam
是mysql的两个存储引擎,innodb支持事务和外键等关系库特征,myisam不支持食物和外键,但是速度更快。通常说innodb更适用于中大型系统建设,因为事务等要求比较高,而myisam适用于小型系统或者读多写少的场景因为读取的速度要远高于前者。
4、分布式系统的cap定理
c(consistency)一致性,整个分布式集群的数据要保证总体一致,与事务处理的一致性不同,我认为这里的意思是不能有二义性。
a(availability)可用性,对于一个可用性的分布式系统,每一个非故障的节点必须对每一个请求作出响应。
p(partition tolerance)分区容忍性,还没理解,大体上是网络部分断了不能影响使用。