/ / Зберігайте будь-який хеш у GDBM і чи можу я шукати в ньому? - база даних, perl, gdbm

Зберігати будь-який хеш у GDBM і чи можу я шукати в ньому? - база даних, perl, gdbm

Читання про GDBM в ця книга вони наводять лише прості приклади структури даних, які можуть зберігатися. Наприклад

$dbm{"key"} = "value";

Передумови

Я хотів би зберегти багато невеликих текстових файлів уБаза даних лише для локального використання та використовувати вкладені хеші та масиви для представлення шляхів до файлів. Це не обов'язково має бути GDBM, але, здається, це єдина бібліотека баз даних ключів / значень для Perl.

Питання

Чи можу я зберігати будь-який хеш у GDBM незалежно від того, чи є багато вкладених хешів та масивів, які він містить?

Чи пропонує GDBM якісь функції пошуку, або мені залишається реалізувати власну в Perl?

Відповіді:

2 для відповіді № 1

Бази даних DBM взагалі не підтримують масиви. Вони, по суті, такі ж, як хеш Perl, за винятком того, що значення елемента може бути лише простим рядком і не може бути числом або посиланням. Ключі та значення для кожного елемента даних у базі даних DBM - це прості послідовності байтів. Тобто API представляє їх а char покажчик і ан int розмір

В рамках цього обмеження ви можете використовувати базу даних, як вам завгодно, але пам’ятайте, що, на відміну від баз даних SQL, кожен ключ повинен бути унікальним.

Ви можете імітувати вкладені хеші, використовуючи дані, отримані одним доступом, як ключ для наступного доступу, але, маючи на увазі вимогу до унікальних ключів, це далеко не ідеально.

Крім того, отримане значення може бути ім'ям іншої бази даних DBM, яку ви можете продовжувати запитувати далі.

Остаточний варіант - об'єднати всі ключі в одне значення, так що

$dbm{aa}{bb}{cc}

насправді було б реалізовано як щось подібне

$dbm{aa_bb_cc}

1 для відповіді № 2

Насправді ви можете зберігати хеші хешей чи списки списків у перл. Ви використовуєте модуль MLDBM від CPAN, а також dbm на ваш вибір.

перегляньте цю книгу в форматі PDF та перейдіть до розділу 13. [https://www.perl.org/books/beginning-perl/][1]

Складна частина полягає у з'ясуванні способу доступу до різних рівнів посилань. Для пошуку вам доведеться пропустити клавіші та проаналізувати значення.