@querty

Требуется спарсить json в базу данных. Критична скорость. Какой язык и фрейворк выбрать?

Требуется спарсить json в базу данных. Данных много и критично чтобы этот json спарсился как можно быстрее. Какой язык и фреймворк выбрать?

Главное именно скорость парсинга.

Сейчас работает на php laravel и на php Yii 2 в базу mysql все сохраняют. Несколько разных парсеров.
И по-моему не самое быстрое решение. Посоветуйте варианты, пожалуйста.
  • Вопрос задан
  • 83 просмотра
Решения вопроса 3
@rPman
Если тормозит json парсер:
- пишите сами, когда формат зафиксирован, можно обойтись регулярными выражениями, это чаще всего бывает отличным компромисом скорость разработки/выполнения, иначе пилите на c/c++ ковырялку посимвольную (не факт что у вас получится быстрее регулярных выражений).

- не пытайтесь одним выражением парсить всю строку, делите на части, чаще всего поиском подстроки/символа все делается.

- не собирайте данные промежуточно в ассоциативные массивы, отправляйте все сразу в sql запросы

Если тормозит запись в sql базу данных:

- отключайте транзакции или делайте их большими, собирая пакетом группу данных между begin .. comit

- отключайте индексы, иногда это дает огромный прирост скорости записи (включая foreign key), после окончания добавления данных вернете

- разместите временно файлы tablespace базы на максимально быстром диске, даже в ущерб надежности, например в оперативной памяти tmpfs/ramdisk (есть свои особенности, по умолчанию виртуалку оно не использует но под windows imdisk умеет), либо ищите где можно включить принудительный кеш на запись (это бывает не просто)

Позже, когда импорт базы закончится, остановите базу и перенесете файлы вручную, поменяв симлинки на каталоги
Ответ написан
firedragon
@firedragon
Senior .NET developer
Посмотрите в эту сторону
https://github.com/salsify/jsonstreamingparser

Кроме того смотрите в сторону техник пакетной вставки.
Ответ написан
@beduin01
Посмотрите вот тут https://github.com/libmir
Есть ряд очень полезны либ в том числе для JSON. Цитата оттуда:
"ASDF is fast. It can be really helpful if you have gigabytes of JSON line separated values."
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bacon
Так надо начать с поиска узкого место, где оно сейчас в парсинге или в записи в базу? Можно еще подумать про масштабируемость текущего решения, часто дешевле просто докупить железо, чем переписывать на что-то другое.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы