Это для python3, поэтому, когда я говорю «список», я имею в виду список python3.
Я хотел бы создать тип данных, который выглядит как список, действует как список, но функционально подкреплен хранилищем данных на диске, которое «обычно» согласованно. Таким образом, если программа, генерирующая файл, потерпит крах, хранилище данных будет по-прежнему доступно для чтения, и объект списка должен быть в состоянии восстановить. Если последняя запись или несколько записей не подлежат восстановлению, это не должно повлиять на остальные данные.
Поскольку у нас не может быть и нашего пирога, и есть его, есть несколько характеристик использования, которые сделают это немного легче:
- Он должен быть оптимизирован для записи и, в частности, для записи в потоковом режиме. Таким образом, можно ожидать, что следующий пункт будет помещен в конец списка, и характеристики производительности должны быть сосредоточены на этом.
- Произвольный доступ должен быть возможен, но не оптимизирован для. Таким образом, если необходимо выполнить снижение производительности, чтобы вставить что-то в середину или изменить элемент, который уже существует, то это нормально. В идеале снижение производительности не пропорционально длине списка.
- Вставляемые объекты будут в основном того же типа, однако объекты нового типа не следует отклонять, если они обнаруживаются.
- Объекты, которые вставляются, в основном будут массивами, похожими на ноль, но они не обязательно будут иметь одинаковую форму.
Я знаю, что написать что-то подобное с нуля может быть монументальным делом, поэтому я ищу некоторую помощь в поиске бэкэнда. На данный момент я видел пару идей:
- PyArrow: вы можете выполнять потоковую передачу на объект на диск, это вообще хранилище в памяти, поэтому должна быть возможность произвольного доступа, даже если вы нажмете удар.
- FlatBuffers: библиотека сериализации в стиле protobuf, в которую можно вставить что-то вроде этого.
- Файл с отображением в память + магия? С функциональной точки зрения то, что мне хотелось бы, похоже на простое добавление списка в расположение с отображением в памяти. Недостатком является то, что читать его потом, если он сломан, будет очень сложно.
Другие