分类
分类 | 特点 |
---|---|
OLTP(Online Transaction Processing) | |
OLAP(Online Analytical Processing) |
HTAP
HTAP是Hybrid Transactional/Analytical Processing的缩写,意为混合事务/分析处理。传统的OLTP(Online Transactional Processing)和OLAP(Online Analytical Processing)系统是分离的,需要在不同的系统中进行操作和管理,而HTAP则将事务处理和分析处理的功能融合在一起。
在HTAP系统中,事务处理和分析处理使用的是同一套数据,因此需要保证数据的一致性和可靠性。为了实现这一点,HTAP系统通常采用以下几种技术:
内存数据库:内存数据库可以提高数据的读写速度,使得HTAP系统可以快速地进行事务处理和分析处理。
分布式架构:HTAP系统通常采用分布式架构,将数据分散存储在多个节点中,可以提高系统的可靠性和容错性。
实时数据同步:HTAP系统需要保证数据的一致性,因此需要使用实时数据同步技术,将事务处理和分析处理使用的数据保持同步。
查询优化:HTAP系统需要支持复杂的查询操作,因此需要使用查询优化技术来提高查询的效率和性能。
redis和mysql的数据一致性问题
随着业务量的增长,项目请求量越来越大,如果每次都从数据库中读取数据,那么肯定会有性能问题。
这个阶段通常的做法是,引入「缓存」来提高读性能,架构模型就变成了这样:
但是这样可能会有一些问题,比如数据一致性的问题,有这样几种方案用于解决
方式 | 特点 | 缺点 | 优点 |
---|---|---|---|
主动更新(双写策略) | 数据库更新后立刻更新缓存 | 会增加数据库的负担 | 能保证数据的一致性 |
延迟更新 | 数据库更新后,不立即更新缓存,等待缓存过期时再更新 | 可能导致缓存中数据不一致 | 减少数据库负担 |
消息队列 | 数据库更新的时候,通过消息队列等方式通知缓存更新,确保缓存和数据库中的数据一致 | 需要额外的管理和维护工作 | 减少对库的压力 |
数据库高性能方案
设计一个能扛住千万并发的数据库架构
层面 | 方式 |
---|---|
数据库层面 | 1.设置mysql的最大连接数 2.使用redis缓存 3.分库分表 4.读写分离 5.不同类型采用不同的数据库 5.池化技术,比如连接池 |
磁盘访问 | 1.磁盘的页缓存 2.尽量顺序读写 3.SSD 4.频繁读写一块区间的时候 5.频繁读写同一块磁盘区域的时候,可以使用mmap代替read/write 6.在需要同步写的场景中,尽量将写请求合并,而不是让每个请求都同步写入磁盘,即可以用 fsync() 取代 O_SYNC |
把架构异步化 | 1.多线程 2.消息队列 |