Структура данных для хранения базы данных - PullRequest
0 голосов
/ 19 октября 2018

Я хочу хранить записи сотрудников.Я не хочу использовать какие-либо внешние библиотеки или рамки.Я пытаюсь построить структуру данных с нуля.

Будет три поля,

EmployeeName
Age
Salary

Мы также хотим запросить, как,

Get all the salary where EmployeeName = "Bill"
Get all the EmployeeName where salary > 2000
Get all the Salary where age='50'

Яоткрыт для использования на любом языке, но не на любом встроенном пакете.Какова рекомендуемая структура данных для ее достижения?

1 Ответ

0 голосов
/ 20 октября 2018

Я предполагаю, что целью этого упражнения является самообразование.

Если да, С чего начать чтение исходного кода SQLite? - отличное место для начала чтения, чтобы понять, как этопрограммное обеспечение может быть построено.

Если вы действительно хотите свернуть свои собственные, я бы посоветовал хранить ваши данные в массиве структур / объектов / словарей (как они будут называться, зависит от вашего языка), скрытыхза объектом, чтобы ваши методы вставки / обновления / удаления в таблице проходили через четко определенные функции доступа.Ваши операции могут быть реализованы неэффективно с grep, filter и т. Д. В зависимости от вашего языка.В дополнение к очевидным полям, включите deleted в качестве поля.Таким образом, вы можете просто обновить его, чтобы удалить запись, а не пытаться модифицировать таблицу.

Чтобы сделать их более эффективными, прочитайте https://cstack.github.io/db_tutorial/parts/part7.html, чтобы написать b-дерево.Затем создайте отображение b-дерева EmployeeName в список индексов записей с этим именем, то же самое для age и salary.Теперь измените методы доступа, чтобы обновить индексы для этих полей при изменении таблицы.Ваши поиски теперь могут проходить через b-дерево, чтобы найти индексы нужных вам записей, а затем вы можете искать их в таблице.

Это значительно упрощено по сравнению с тем, что дает вам база данных,но вы на пути к пониманию того, как работают базы данных.И с точки зрения того, почему они масштабируются, а также почему они не волшебны быстро.

...