zoukankan      html  css  js  c++  java
  • DDIA读书笔记【三、存储与检索】

      数据库主要分为传统的关系型数据库,和近些年流行起来的NoSql。

      举了个最简单的数据库例子,有点像我以前实现过的,持久化数据,不存入数据库,就在文件里弄个txt文件,用IO流每次在最后一行存个固定格式的数据。

      索引,可以增加数据库查询时的速度,但维护索引需要格外的开销与内存,在写入操作时也会增加时间。

      哈希索引, B树,LSM树(日志结构存储),介绍了每种的优缺点。关系型数据库好像用的就是B树

      数据仓库是一个独立的数据库,分析人员可以查询他们想要的内容而不影响OLTP操作。这是大公司才有的烦恼,怪不得我在工作中没怎么遇到这种问题。

      

      我们看到存储引擎分为两大类:优化 事务处理(OLTP) 或 在线分析(OLAP) 。这些用例的访问模式之间有很大的区别:

    • OLTP系统通常面向用户,这意味着系统可能会收到大量的请求。为了处理负载,应用程序通常只访问每个查询中的少部分记录。应用程序使用某种键来请求记录,存储引擎使用索引来查找所请求的键的数据。磁盘寻道时间往往是这里的瓶颈。
    • 数据仓库和类似的分析系统会低调一些,因为它们主要由业务分析人员使用,而不是由最终用户使用。它们的查询量要比OLTP系统少得多,但通常每个查询开销高昂,需要在短时间内扫描数百万条记录。磁盘带宽(而不是查找时间)往往是瓶颈,列式存储是这种工作负载越来越流行的解决方案。

      在OLTP方面,我们能看到两派主流的存储引擎:

      日志结构学派

      只允许附加到文件和删除过时的文件,但不会更新已经写入的文件。 Bitcask,SSTables,LSM树,LevelDB,Cassandra,HBase,Lucene等都属于这个类别。

      就地更新学派

      将磁盘视为一组可以覆写的固定大小的页面。 B树是这种哲学的典范,用在所有主要的关系数据库中和许多非关系型数据库。

      

  • 相关阅读:
    Java反射
    安装python
    查看网页加载速度,并优化
    模型按一个圈摆放(10等分)
    y = n*x 匀速,变速运动
    物体绕圆形做圆周运动
    three.js 相机跟随鼠标移动
    three.js 物体随鼠标移动
    three.js 画正多边形-线性
    ES6的JavaScript数据结构实现之队列
  • 原文地址:https://www.cnblogs.com/weixin-tt/p/13873233.html
Copyright © 2011-2022 走看看