摘要:并发控制是数据库理论里面最难的课题之一 并发控制首先了解一下事务,transaction 定义如下, 其实transaction关键是,要满足ACID属性, 左边的正式的定义,由于的intuitive的理解其中可能Consistency比较难理解一下,其他都比较直观,对于单机数据库而言consist
阅读全文
摘要:正常应用和数据库交互的过程是这样的, 其实我们也可以把部分应用逻辑放到DB端去执行,来提升效率 User-defined Function Stored Procedures Triggers Change Notification User-defined Types Views UDF 用户定义
阅读全文
摘要:并发执行,主要为了增大吞吐,降低延迟,提高数据库的可用性 先区分一组概念,parallel和distributed的区别 总的来说,parallel是指在物理上很近的节点,比如本机的多个线程或进程,不用考虑通信代价distributed,要充分的考虑通信代价,failover的问题,更为复杂 Pro
阅读全文
摘要:查询优化应该是数据库领域最难的topic 当前查询优化,主要有两种思路, Rules-based,基于先验知识,用if-else把优化逻辑写死 Cost-based,试图去评估各个查询计划的cost,选取cost比较小的 一个sql query的处理流程, 先是Parser,生成抽象语法树ast,B
阅读全文
摘要:Sorting 排序如果可在内存里面排,用经典的排序算法就ok,比如快排 问题在于,数据表中的的数据是很多的,没法一下都放到内存里面进行排序 所以就需要用到,外排,多路并归排序 看下最简单的,2路并归排序, 设文件分为N个page,memory中一次最多可以放入B个pages 所以在sort过程,一
阅读全文
摘要:Query Model Query处理有三种方式, 首先是Iterator model,这是最基本的model,又称为volcano,pipeline模式 他是top-down的模式,通过next函数去逐层获取tuple 好处是比较简单,并且很容易做limit iterator的例子,输出一个数据,
阅读全文
摘要:这章主要描述索引,即通过什么样的数据结构可以更加快速的查询到数据 介绍Hash Tables,B+tree,SkipList 以及索引的并行访问 Hash Tables hash tables可以实现O(1)的查询,设计主要考虑两点 首先用什么hash function?底下列出常用的hash fu
阅读全文
摘要:Database Storage 存储分为volatile和non-volatile,越快的越贵越小 那么所以要解决的第一个问题就是,如果尽量在有限的成本下,让读写更快些 意思就是,尽量读写volatile存储,但是volatile比较很有限,所以需要合理的在两种存储上去swap 但是技术是在飞速的
阅读全文
摘要:https://www.kdnuggets.com/2017/02/apache-arrow-parquet-columnar-data.html https://arrow.apache.org/ https://hyper-db.de/index.html#team CMU-db,https:/
阅读全文
摘要:mark,很清晰的图 https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
阅读全文
摘要:INTRODUCTION 面对的问题,3个方面, In modern distributed cloud services, resilience and scalability are increasingly achieved by decoupling compute from storage
阅读全文
摘要:https://www.quora.com/How-does-MemSQL-compare-to-VoltDB mark
阅读全文
摘要:部分整理。。。 什么是SQL注入? 简单的例子, 对于一个购物网站,可以允许搜索,price小于某值的商品 这个值用户是可以输入的,比如,100 但是对于用户,如果输入,100' OR '1'='1 结果最终产生的sql, 这样用户可以获取所有的商品信息 再看个例子, 对于用户身份认证,需要输入用户
阅读全文