2012-06-08 5 views
0

У меня есть сервер Ruby, который читается из плоского файла каждые 1 секунду или около того, и этот плоский файл постоянно обновляется новыми данными каждые 1 секунду или около того другим сервером. Этот плоский файл по существу является файлом JSON. Дело в том, что я не хочу читать весь файл снова и снова. Скорее, я хочу, чтобы рубиновый сервер определил, какой из контента является новым, и читайте только те части. Поэтому я предполагаю, что я ищу анализатор JSON с явным успехом для Ruby. Поскольку я очень новичок в Ruby, я не знаком с такой библиотекой. Может ли кто-нибудь предложить что-то, что может работать в такой ситуации?Stateful JSON Parser for Ruby

+0

Вы хотите иметь возможность анализировать по мере поступления данных? –

+0

@FrederickCheung: «какой из материалов является новым» - я не думаю, что он говорит о файле только append. –

+0

@FrederickCheung: Как упоминал Серджио, я хочу читать только новое содержание. Я хочу иметь возможность следить за тем, где закончилась предыдущая операция чтения в этом файле, и возобновить чтение. Это проблема. Я не могу понять, как это сделать. Кроме того, я пишу демона, который будет периодически очищать файл, удаляя предыдущие строки json после достижения порогового значения. Это добавляет проблемы. Какие-либо предложения? – InfiniteLoop

ответ

0

Нет такой вещи, как «анализатор JSON с выраженным состоянием». Stateful (как в «stateful server») означает, что сервер (или парсер) поддерживает некоторое состояние между запросами (разборами). Но вам все равно придется читать и разбирать весь файл, так зачем же усложнять материал?

Если файл невелик, просто разборьте его целиком каждый раз. Если файл является ginormous, используйте базу данных.

+0

«Но вам все равно придется читать и разбирать весь файл». Это моя проблема. Есть ли способ не делать это каждый раз? Может ли запись в синтаксическом анализаторе останавливаться и возобновляться оттуда в следующий раз? Я надеюсь, что есть парсер, который может это сделать? – InfiniteLoop

+0

Итак, другой процесс, это только добавление к файлу? –

+0

И да, файл большой. Он будет содержать несколько тысяч строк JSON, и я стараюсь делать все в режиме реального времени. Вот почему я не хочу постоянно читать весь файл. Я мог бы использовать базу данных, но я подключаю этот модуль к другому большому, и он записывается в плоские файлы. Изменение это довольно сложно, и это не дорога, которую я хочу взять. Вот почему я пытаюсь решить проблему таким образом. Любая помощь приветствуется! Благодаря! – InfiniteLoop