2016-02-10 2 views
2

Я экспериментирую с FlatBuffers для хранения данных OpenStreetMap. Таким образом, это будет 50 ГБ.FlatBuffers: Как написать гигантские файлы

Поскольку обычно все хранится в памяти, как это возможно (если вообще), чтобы последовательно записывать данные в файл?

У меня такое чувство, что это не совсем то, где FlatBuffers хороши для.

+0

Посмотрите на API-интерфейс, сопоставленный с памятью, для вашей платформы. Есть способы отображать регионы в память, поэтому вам не нужно иметь все 50 ГБ в памяти, но ее части. – Matt

ответ

1

В настоящее время невозможно создать ни одного FlatBuffer, не имея сразу все в памяти. Единственный способ сделать это - вместо этого написать цепочку меньших независимых FlatBuffers (с префиксом длины).

+0

Есть ли общий способ сделать это? – benjist

+0

Нет, нет, но ваш вопрос заставляет меня думать, что мы должны добавить его в библиотеку FlatBuffers. – Aardappel

+0

Это не трудно, хотя, что я хотел бы предложить это файл, который содержит: длина 32bit из FlatBuffer 1 - буфер содержимое FlatBuffer 1 - длина 32bit из FlatBuffer 2 - буфер содержимое FlatBuffer 2 - и т.д. – Aardappel