vlambda博客
学习文章列表

数据库架构设计需要满足哪些

数据量太大一般怎么办?

-水平拆分

引入分片之后,需要查看哪个数据库的数据,路由规则有如下几种

-范围(range)

  .各库的压力不均匀

-哈希(hash)

.迁移比较麻烦(一致性hash算法)

-统一路由服务

.每次访问数据库前多查询一次数据库

分组

互联网公司一般都会使用"分组+分片"


数据库架构要设计那些,需要满足哪些条件?

-数据的可用性

-提高数据的读性能

-保证一致性

-扩展性


如何保证可用性?

-思路:冗余

-副作用:一致性问题


如何保证数据库"读"高可用?

-冗余读库

-副作用:读写延迟,会造成数据不一致

数据库架构设计需要满足哪些

如何保证"写"高可用?

-采用双主互备

-副作用:双写同步,可能会造成数据冲突。(自增Id冲突)

数据库架构设计需要满足哪些

阿里云号称可以做到"高可用",他是怎么做的?

-双主同步

-双主,但只有一个住提供读写,另外一个待命。master1挂了,backup-master顶上,通过虚拟IP漂移。

数据库架构设计需要满足哪些

如何扩展读性能?

-增加索引

.写库不增加索引

.读库建立索引

-增加从库

.从库多了,同步就慢了

.同步一慢.数据不一致的可能性就大了

-增加缓存



如何保证一致性?

主从数据库的一致性,有如下的解决方法

1.中间件

如果某一个key有写操作,在不一致时间窗口内,中间件会将这个key的读操作也路由到主库上。

数据库架构设计需要满足哪些



2.强制读主

“双主高可用”的架构,主从一致性的问题可以得到大大的缓解。

还有一种不一致,是DB和缓存之间的不一致。