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树是这种哲学的典范,用在所有主要的关系数据库中和许多非关系型数据库。

      

  • 相关阅读:
    Candy leetcode java
    Trapping Rain Water leetcode java
    Best Time to Buy and Sell Stock III leetcode java
    Best Time to Buy and Sell Stock II leetcode java
    Best Time to Buy and Sell Stock leetcode java
    Maximum Subarray leetcode java
    Word Break II leetcode java
    Word Break leetcode java
    Anagrams leetcode java
    Clone Graph leetcode java(DFS and BFS 基础)
  • 原文地址:https://www.cnblogs.com/weixin-tt/p/13873233.html
Copyright © 2011-2022 走看看