网站建设之数据库横向扩展

网站建设-横向数据库扩展
横向扩展数据库
         在构建网站的过程中,高度可扩展的体系结构设计可以确保当网站访问量和访问量达到零时,我们可以以较低的成本扩展现有系统。通常,网站系统最难开发的部分是数据库或持久性存储。当今最流行的RDBMS数据库(如Oracle,Sql Server等)都是关系数据库。多数数据库都基于基于ACID属性的外键,如下表所示,
 
 
 
属性
 
说明
 
原子性
 
终止事务的所有操作或不执行任何操作
 
一致性
 
在事务开始和结束时,数据库中的所有数据必须保持一致
 
隔离
 
事务的行为就像是对数据库执行的唯一操作一样
 
持续时间(持续时间)
 
交易完成后,无法更改交易
 
 
 
         无论使用哪种外键,原理都是只要写入和读取操作同时发生,就会有两种情况。
 
读取数据和实际数据之间存在差异,因为数据在读取过程中已更改;
必须确保读写操作不能同时发生,并且该操作必须等待另一操作完成才能继续。
基于此原理,当网站访问量达到一定数量时,根据所使用的不同ACID外键属性,将存在较大的数据差异或过多的等待操作时间,因此我们需要扩展数据库以解决此问题。 。
 
 
 
         在90%以上的网站建设项目中,数据库的读取操作远高于写入操作,尤其是对于公司网站的生产而言,其中99%是读取操作。写操作。对于如此高的读写速率的网站应用程序,创建只读数据库副本可以轻松扩展此类系统。通过创建数据库副本来水平扩展数据库的这种技术称为“读写分离”。
 
时间敏感性
         根据数据的时间敏感性,有两种方法可以分发数据的只读副本。时间敏感性是什么?我们为什么要关心呢?时间敏感性是指将新的读取副本与数据库的写入副本进行比较的方式或完全同步的程度。因为对于具有单独读写的数据库,理论上可以完全同步读写副本,但是成本很高,所以通常不是利益相关者想要的质量/价格比。因此,我们在这里讨论的实际上是您可以容忍的读写数据差异。
 
查询缓存
此方法涉及在数据层或应用程序层建立高速缓存层,并且每个请求可以首先检查高速缓存中是否已存在对象,而不是每次都读取数据库。写操作之后,应将数据标记为已过期,并应查询事务数据库以获取数据并在下次读取时更新缓存。有许多出色的键值存储可以用作缓存系统,例如Memcache,Redis,Couchbase等,因此强烈建议使用此方法。