#244

Самый удобный файловый формат

Это текстовый файл, где одна строка — одна запись в JSON (без перевода строк).

В начале такого файла выдели пару килобайт, заполни их нулями. Здесь у тебя будет жить заголовок, тоже в виде JSON-строки. Здесь можно хранить, например, количество записей, контрольные суммы, даты и так далее.

Почему обязательно пару килобайт? Потому что так ты сможешь перезаписывать заголовок, не перезаписывая весь файл целиком. Если бы ты просто назначил заголовком первую строку, то тебе при ее изменении пришлось бы перезаписывать все. А так у тебя есть паддинг.

Почему нулями? Потому что ты можешь сказать cat file и он выведет байты только до первого нуля — очень удобно просматривать.

С перезаписываемым заголовком удобно создавать простейший журнал.

Из полезных идей: в заголовке фиксированного размера можно хранить индексы.

const recordsByUserId = {};
for (let i=0; i<records.length; i++) {
  recordsByUserId[record.userId] = i;
}