Два индекса для каждого запроса, требуемого движком приложений Google - PullRequest
1 голос
/ 05 марта 2011

Для каждого запроса, даже такого простого, как SELECT * FROM Entity, механизм приложений поддерживает два индекса: один в порядке возрастания, а другой в порядке убывания. Затем он находит первую подходящую строку, работает до тех пор, пока не найдет несоответствующую строку и не вернет результаты.

Но почему? Я не понимаю, почему какой-либо механизм, который использует Google, нельзя просто изменить в нисходящем случае, особенно учитывая штраф за пробел, вызванный удвоением количества индексов. Для этого должна быть очень веская причина.

1 Ответ

2 голосов
/ 06 марта 2011

Не могу сказать наверняка, но я предполагаю, что хранилище данных GAE работает поверх Bigtable (например, «Sharded Sorted Array»).думаю, что запросы, которые возвращают много строк) выполнены, вероятно, быстрее выполнять непрерывное чтение с диска, и это, вероятно, то, что Bigtable оптимизирован для выполнения.Движение в обратном направлении потребовало бы много операций поиска диска, что замедлило бы ход работы.

Райан Барретт говорит о Bigtable и Datastore;он говорит о сканировании около 7 м 50 с .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...