B+树做文件系统的问题
1->需要做一个文件系统,我的实现是一个索引文件和一个数据文件,用B+树来实现。我想问那个索引文件里头是怎么存下B+树结构的?还是说在加载的时候才在内存形成B+树(而索引...
1->需要做一个文件系统,我的实现是一个索引文件和一个数据文件,用B+树来实现。我想问那个索引文件里头是怎么存下B+树结构的?还是说在加载的时候才在内存形成B+树(而索引文件本身是没有什么特别的排序方式)?
2->另外,是不是要把所有的关键字都加载到内存里?如果是这样,像淘宝那样巨大的数据库内存不是都要爆掉了?如果不是…想要对所有数据进行排序的话,又该怎么实现? 展开
2->另外,是不是要把所有的关键字都加载到内存里?如果是这样,像淘宝那样巨大的数据库内存不是都要爆掉了?如果不是…想要对所有数据进行排序的话,又该怎么实现? 展开
1个回答
展开全部
这个问题我尽力回答你,因为我是做数据库系统实现的,对操作系统了解的还是差一些
1,索引文件的管理也是基于页面进行的,一般来说一个页面就是索引文件的一个节点,所以索引文件里存储B+树结构还是按照页面进行管理,在页面内部则是用顺序表存储索引项,在加载时将B+树的页面节点加载到内存中,这时需要进行地址转换,就是节点之间的连接原来是磁盘的地址,现在要修改为内存地址,这样就形成内存的索
2,如果索引很大,可以先加载根节点,在需要的时候加载其他节点。淘宝的数据库是分层的,包括oracle,mysql集群,文件系统,根据数据的新鲜度和潜在访问频率依次存储,此外,淘宝还使用了内存数据库集群来存储索引这来信息,通常是有上百台机器的集群构成的分布式内存存储,查找的时候使用hash方式,这样可以不用排序,如果是范围查找,可以让每个服务器管理一个区间。
1,索引文件的管理也是基于页面进行的,一般来说一个页面就是索引文件的一个节点,所以索引文件里存储B+树结构还是按照页面进行管理,在页面内部则是用顺序表存储索引项,在加载时将B+树的页面节点加载到内存中,这时需要进行地址转换,就是节点之间的连接原来是磁盘的地址,现在要修改为内存地址,这样就形成内存的索
2,如果索引很大,可以先加载根节点,在需要的时候加载其他节点。淘宝的数据库是分层的,包括oracle,mysql集群,文件系统,根据数据的新鲜度和潜在访问频率依次存储,此外,淘宝还使用了内存数据库集群来存储索引这来信息,通常是有上百台机器的集群构成的分布式内存存储,查找的时候使用hash方式,这样可以不用排序,如果是范围查找,可以让每个服务器管理一个区间。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询