不论对于什么数据库,druid es mysql hbase,凡是能实现秒级查询的数据库,无一不是借助将索引全部存入内存来加快索引。
所以入库的过程本质上就是建索引的过程,这个建索引过程就是有master节点发起的一个mapred任务。
索引只有两种:位图索引(druid hbase),倒排索引(es)
当开始调用java scala版本的插入数据,或者flink sink中的插入数据,本质上就是为单条数据生成索引,并写入数据的过程。
所以生成索引和写入数据的过程是最重要的,涉及到整个分布式存储的架构,实际上写入数据过程就是一个mapred过程。
至于查询很简单,就是根据过滤条件到位图索引中检索。
查索引只是高性能的表现,本质上是因为建索引机制的高效完善。
凡所有的数据库或者分布式存储,学习过程中问自己四个问题
1.数据是如何写的,包括api函数和写数据过程。写数据本质上是由master发起一个mapred任务。
2.数据是如何读的,包括api函数和读数据过程。读的原理简单,但api一般较多。
3.为啥读快,索引原理
4.为啥写快,日志结构合并树(druid hbase)
博客指出能实现秒级查询的数据库,如druid、es、mysql、hbase等,借助将索引存入内存加快查询。入库即建索引,有位图和倒排两种索引。生成索引和写入数据是关键,涉及分布式存储架构。还提出学习数据库应思考数据读写方式、读写快的原因等问题。
2959

被折叠的 条评论
为什么被折叠?



