Авторы SQLite весьма сообразительны.

Dec 08, 2013 00:13

http://sqlite.org/src4/doc/trunk/www/design.wiki - они отказались от отдельных таблиц и сказали, что все значения буду хранится в одном большом пространстве ключ+значение. Плюс, на это дело наложено Log Structured Merge tree.

http://sqlite.org/src4/doc/trunk/www/key_encoding.wiki - они ловко закодировали ключи. Например, выборка из таблицы будет выборкой по определенному диапазону ключей, где первым значением будет номер таблицы (вероятней всего, всего пара байт), потом номер строки.

Индексы в таком случае получаются совершенно органически. При этом вставка втаблицу с индексом - это обычное добавление ещё одной пары ключ+значение, только ключ будет иметь набор выражений индекса. При типичном использовании LSM дерева вставка ОЧЕНЬ быстра. Реализованное на C# LSM tree, без каких-либо оптимизаций дает скорость в районе многих десятков и даже сотен тысяч вставок в секунду.

При этом данные, адресуемые по индексу, могут не содержать те поля, что есть в индексе. Это сокращает объем передаваемых данных и ускоряет поиск. Не надо делать дополнительную выборку данных записи БД.

Ключи могут быть упакованы, на общих условиях, что ещё сильней ускорит обращение к БД.

В общем, я считаю, что SQLite4 разрабатывают весьма компетентные люди. Чрезвычайно рекомендую к ознакомлению.

базы данных, работа

Previous post Next post
Up