开发通过服务的方式调用服务进行操作。而不是通过控制台进行操作和管理实现的。
大数据的核心在于选择存储操作:存储类型的选择是很关键的。存储类型选择错误的话,对应的数据存储会出现相关的服务问题的。存储的选择很关键的。
画像的数据相对而言是比较的稀疏。需要选择可以存储稀疏格式类型的数据集的数据。
擅长进行统计查询和聚合查询操作实现。查询的需求比较的多样化的操作的。
mysql底层的数据结构是B+数的数据结构的。B+数的原型是B树。mysql的主要作用是时间数据的存储和查找操作的,选用的底层的树结构可以快速的实现数据的查找操作和实现。对应的采用的是查找二叉树进行操作和实现。
问题:数据库的io次数取决于树的高度的。树的高度越高的话,对应的io的次数就越高的,需要解决查找二叉树的io次数问题。
mysql读取数据的配置是一个page的机制读取数据的。可以解决io读物的速度的问题。
查找二叉树的作用:快速的查找到对应的数据。主要的作用是创建索引执行操作的。
解决查找二叉树的层次问题:解决层次太深的问题。
查找二叉树的层次太多的问题:1.每一层对应的节点的数量太少了;2.一个节点对应的只能够有一个子节点的数据的。
B树在查找的时候可以极大的节省磁盘的空间。b树查找的是采用的也是减半的思路进行查找的。b树的存在可以极大的节省磁盘的io空间的,这个是b树存在的意义。
b树种查询不同的数据,对应的io次数是不一样的。这个问题是不可以接受的。导致问题不可控。原因在于:每一个节点都包含数据。解决办法:中间节点不包含数据?
B+树的特点:1.所有的中间节点都是中间节点的映射,中间节点不包含数据。
mysql的索引采用的是B+树创建的。mysql的innodb底层采用的是B+树的。mysql的innodb的数据存在在B+树种的。
聚集索引:索引的顺序和数据的存储顺序保持一致。
非聚集索引:索引的顺序和数据的存储顺序不一致。
mysql的一张表只有一个聚集索引。任何一张表自带一个主键的。默认根据主键创建索引的。只有一个默认的聚集索引的。B+的设计思路是为了查询设计的。mysql的主要的侧重点是关注的是查询的性能设计的。层次不能太高的。所以,数据插入的性能不是很太高的。主要的重点是查询操作的。
大数据中主要采用的是列存储的,只是查询和获取指定的列的话,读取的数据比较的少的。
hbase的底层主要的核心是lsm tree(日志合并树)。在海量数据存储上面的使用的比较广的。lsm 是大数据的核心技术的。kudu以及tidb,druib都是借鉴了lsm tree的原理的。lsm tree的每一个小树对应的是一个Btree的。
hbase源自于bigtable加上lsm tree实现构建起来的。
hbase的特点:1.全局有序的rowkey,根据字段顺序进行排序。2.不仅有列,对应的还存在列族的概念的。列族不宜过多的,一般的2~5个列族即可的。
hbase的优化点:减少cf(column family)的数量。cf的个数越少的话,对应的memstore的数量就会对应的减少的。数据在内存中会更加的集中的。每一个cf都对应的着一个hfile的。
hbase在一个regionserver上面是可以存储多个region的。region对应的是lsmtree的。包括了memstore以及diskstore的树结构的。memstore对应的存储在内存中的。diskstore对应的存储在磁盘中的。
hbase的优化点:
hash冲突:将不同长度的数据hash之后得到相同的hash数值,这种问题称之为hash冲突。hash函数是有一定的概率产生hash冲突的。
需求:在一个非常大的数据集中,快速的确认某个元素是否存在。
优化点1:布隆过滤器。可以将大量的数据集映射成为非常小的数据集的。可以确认元素是不存在的,但是无法确认元素是否存在的。hbase使用布隆过滤器提升了查询性能。对应的是hfile级别的
优化点2:hbase采用的是hbase的,对应的包括了第一级的memstore以及处于第二级和第三级的diskstore的树结构的。memstore存储在内存中的,diskstore存储在磁盘中的。第一级到第二级对应的存在树结构的合并,发生在内存中的,第二级和第三级的合并发生在磁盘中的(速度很慢的)。对应的是region级别的优化的。
其中第一级到第二级的合并对应的小的合并,经常发生的。触发的条件对应的也是存在很多的。
第二级到第三级别的合并一天发生一次,合并期间影响数据的io性能的。数据读取的速度会特别的慢的。
优化点:hbase的cache操作:对应的是regionserver级别的优化的。一个regionserver对应的存在一个blockcache的。对应的是读缓存的。会将数据读取出来存在blockcache中的,下一次直接从blockcache中读取数据的。下一次就不在需要从hbase中读取数据的。
hbase对应的特别的擅长写的性能的。hbase的查询的性能是做了很多的优化的,但是性能还是存在问题的。hbase的查询性能是扫描的操作的。查询性能是很差的。
hbase适合的是适合稀疏表的存储的。es以及solr不擅长存储数据的。只是适合作为存储进行操作的。
网友评论