?

Log in

No account? Create an account

Previous Entry

Теперь уже в этой теме прошу писать всех, кто хотел бы что-то обсудить – статьи на сайте или же просто какие-то интересные/актуальные вопросы. По результатам сбора пожеланий опять-таки будут созданы темы для обсуждения. Или же статьи, что тоже реально.

Я был бы рад, если бы анонимные комментарии и вопросы были подписаны – проще отвечать.

Comments

skipy_ru
Mar. 16th, 2011 08:30 pm (UTC)
Re: пожелание
Добрый день!

Для начала - вот это: http://download.oracle.com/javaee/1.4/tutorial/doc/. С 4-й по 7-ю главы. Потом 18-я глава вот отсюда, это уже больше для ознакомления: http://download.oracle.com/javaee/5/tutorial/doc/. Потом можете почитать про Java API for XML Binding (JAXB, 17-я глава в tutorial по версии 5).

Если на пальцах - существует два подхода к обработке xml. Первый - SAX, Simple API for XML. Обработка последовательная. Фактически Вы решаете, какие теги Вам интересны, и ждете от обработчика событий - найден открытый тег, найдено тело тега, найден закрытый тег. Преимущества - требуется мало памяти. Недостаток - сложность реализации.

Второй способ - DOM, Document Object Model. В этом случае весь XML затаскивается в память, далее с ним можно работать как с деревом. Преимщество - простота работы, можно использовать XPATH, модифицировать узлы. Недостаток - нужно много памяти.

В Вашем случае, как это ни парадоксально, хорошо не подходит ни один вариант. Большой объем логов означает, что памяти под него потребуется много. Т.е. с DOM будут проблемы. Но на SAX не реализуется быстрая фильтрация. - придется каждый раз разбирать документ сначала. Не говоря о том, что это просто сложнее в реализации.

В общем, по здравому размышлению, я бы для этих случаев использовал SAX, вернее даже StAX. Наверное. Проблема в том, что до StAX у меня руки никак не дойдут, я знаю, что он быстрый, но тонкостей работы с ним пока не могу рассказать.

В принципе, если через JAXB этот XML в объекты парегнать да компараторов написать - сортировки да фильтрации будут эффективными. Но это опять память, от DOM недалеко ушло. Хотя работать будет проще, чем с XML в виде DOM.

P.S. А по хорошему - это чистая задача для использования базы данных. Загнать в базу, сделать индексы по всем полям - и выборки можно эффективные организовать, постраничные, и фильтрацию, и поиск.

Edited at 2012-11-12 08:29 pm (UTC)