我基本上想知道GAE如何实现其索引,我熟悉B +树等索引并且想知道是否例如filter()方法使用B +树来实现它?我可以在SDK的appengine代码中看到这个实现,因为它是开源的吗?是否使用散列实现了get()和get_by_id()函数使其成为O(1)`是过滤函数O(log(n)),因为人们可能认为它使用的是B +树,其中查找为O(log(n)) )?
感谢您的任何见解
答案 0 :(得分:5)
简短的回答是,查询过滤是通过单属性和多属性(也称为复合)索引实现的。查询计划程序选择一个或多个以密集扫描和合并,即所有或几乎所有扫描的索引行对应于查询的有效结果。我的演讲中的细节。
get()实现为bigtable单行查找。它介于O(1)和O(log(n))之间,具有小的常数因子,因为log(n)部分通常完全在内存中发生。重要论文中的详细信息。