Последние пару дней я возился с SQLite3, и кажется, что это неплохая база данных, но мне интересно узнать, как она используется для сериализации.
Мне нужно сериализовать набор пар ключ / значение, которые связаны с другой таблицей, и я так и делал до сих пор.
Сначала будет таблица предметов:
CREATE TABLE items (id INTEGER PRIMARY KEY, details);
| id | details |
-+----+---------+
| 1 | 'test' |
-+----+---------+
| 2 | 'hello' |
-+----+---------+
| 3 | 'abc' |
-+----+---------+
Тогда будет таблица для каждого предмета:
CREATE TABLE itemkv## (key TEXT, value); -- where ## is an 'id' field in TABLE items
| key | value |
-+-----+-------+
|'abc'|'hello'|
-+-----+-------+
|'def'|'world'|
-+-----+-------+
|'ghi'| 90001 |
-+-----+-------+
Это работало нормально, пока я не заметил, что для каждого стола были накладные расходы в один килобайт. Если бы я имел дело только с несколькими предметами, это было бы приемлемо, но мне нужна система, которая может масштабироваться.
По общему признанию, это первый раз, когда я когда-либо использовал что-либо, связанное с SQL, поэтому, возможно, я не знаю, для чего должна использоваться таблица, но я не смог найти никакого понятия о таблица "или" структура "тип данных. Теоретически, я мог бы преобразовать пары ключ / значение в строку, например, «abc | hello \ ndef | world \ nghi | 90001», и сохранить ее в столбце, но это заставляет меня задуматься, не противоречит ли это цели использования базы данных во-первых, если я собираюсь преобразовать свои структуры во что-то, что может быть так же легко сохранено в плоском файле.
Я приветствую любые предложения, которые есть у кого-либо, включая предложения другой библиотеки, лучше подходящей для целей сериализации этого типа.