В настоящее время я использую JSON (сжатый через gzip) в своем проекте Java, в котором мне нужно хранить на диске большое количество объектов (сотни миллионов). У меня есть один объект JSON на строку, и я запрещаю перенос строк в объекте JSON. Таким образом, я могу передавать данные с диска построчно, не читая сразу весь файл.
Оказывается, анализ кода JSON (с помощью http://www.json.org/java/) - это больше накладных расходов, чем извлечение необработанных данных с диска или их распаковка (что я делаю на лету).
В идеале мне нужен строго типизированный формат сериализации, где я могу указать «это поле объекта представляет собой список строк» (например), и поскольку система знает, чего ожидать, она может быстро десериализовать его. Я также могу указать формат, просто указав кому-нибудь его «тип».
Он также должен быть кроссплатформенным. Я использую Java, но работаю с людьми, использующими PHP, Python и другие языки.
Итак, резюмируя, это должно быть:
- Строго типизированный
- Потоковая передача (т. Е. Чтение файла по крупицам без необходимости загружать все сразу в ОЗУ)
- Кросс-платформенный (включая Java и PHP)
- Быстрый
- Бесплатно (как в речи)
Есть указатели?