=索引(大数据)=
大数据系统的数据管理,采用位图索引、树索引等。大数据系统的数据管理,采用位图索引、树索引等。位图索引在数据库、版本控制系统都有应用。
==Git软件的对象计数(counting )Git软件的对象计数问题==
git 对象计数问题(counting objects)是git软件进行git clone时,需要实时计算出需要克隆的对象总数。
Git的对象(object)就是文件,包括快照对象(Commit),目录对象(Directory)和文件对象(File)。
#加总所有需要变动的对象
==位图索引对象技术的位图索引方法==
Git软件为为每一个commit生成一个二进制值,即Bitmap索引。
打开本地目录:.git/objects/pack/,其中是一个索引文件和一个数据文件,它们就是Bitmap。 简单说,这两个文件索引了当前代码库的所有对象,然后使用一个二进制值代表这些对象。有多少个对象,这个二进制值就有多少位。它的第n位,就代表数据文件里面的第n个对象。,其中是一个索引文件和一个数据文件,它们就是Bitmap。这两个文件索引了当前代码库的所有对象,然后使用一个二进制值代表这些对象。有多少个对象,这个二进制值就有多少位。它的第n位,就代表数据文件里面的第n个对象。
每个commit都会有一个对应的二进制值,表示当前快照包含的所有对象。这些对象对应的二进制位都为1,其他二进制位都为0。
这样做的好处是:采用位图索引的优点是:
#不用读取commit对象,只要读取这个二进制值,就会知道当前commit包含了哪些节点。
#两个二进制值只要做一次XOR运算,就会知道哪些位(即哪些对象)发生了变动。
#新的对象总是添加到现有二进制位的后面,所以只要读取多出来的那些位,就知道当前commit比上一次commit多出了哪些对象。
这样一来,因为采用位图索引,"清点对象"就变成了位图的二进制值的比较运算和计数运算,因此速度极快。
===参考链接===
http://www.ruanyifeng.com/blog/2015/09/git-bitmap.html