今天学习,数据存储和计算机存储模型,以一个例子说明,一段数据如何从外部写入硬盘,写入程序。了解其中cache起到了非常重要的作用。
关系型数据库四个特性:原子性(Atomicity),一致性(Consistency),隔离型(Isolation),持久性(Durability)——AICD
cache
目前,常用的缓存方案有 Memcached,Hazelcast,Redis(最广泛)
文件存储
对象(Blob)存储方案,如 Amazon S3,通常,Blob 存储方案还可以与 CDN 结合使用来减少延迟,这样就可以实现无地理位置差异提供内容服务。
是三个方面考虑
- Volatile易失性存储器:断电后,存储的数据会丢失。支持字节访问,可以直接读取或更新任意字节大小的数据。随机访问与顺序访问的速度差不多。例如 CPU 寄存器、CPU 缓存(L1,L2,L3)和 DRAM(动态随机存取存储器)。
- non-volatile非易失性存储器:断电后,存储的数据不会丢失。不支持字节访问,只支持块访问。如果要读取某一字节的数据,必须将这字节所在的块或页(page)的数据一起读取出来,并且一起更新。随机访问速度远小于顺序读取,所以对于非易失性存储器必须尽量用顺序访问。例如 SSD(固态硬盘)、HDD(硬盘驱动器)和网络存储(例如 AWS 的 EBS 和 S3)。
允许不同的线程或不同的查询同时运行来避免每次读或写的时候都因为写入或者读取磁盘导致执行效率低。
大部分数据库是依赖操作系统提供的文件系统的
- 根据当前数据库存储格式以及用户请求,决策脏页刷入磁盘的顺序,提高效率
- 根据存储结构以及用户请求,缓存预取提高查询速度
- 根据存储结构优化缓冲过期策略
- 多线程管理
其他:文档型数据库
问题:如何保证在高并发、高流量下的访问速率?与缓存的改进点?