Окт 15
О живых данных
В последние несколько месяцев от меня было куда меньше постов чем обычно по довольно простой причины – прямо сейчас я занимаюсь проектом довольно непростым понятийно и технически. Планировал я его несколько лет и только в этом году удалось приступить к реализации.
Проект, разумеется, связан с большими объёмами информации, её обработкой, классификацией и последующим представлением. Особенность этого в том что работа идёт с «живыми данными», а то есть источников информации много, информация разноформатна, предоставляется в разном качестве, содержит ошибки в структуре и в значениях, обладает разными ограничениями и прочими особенности нетепличных данных.
В то же время это «живые данные» имеют массу специфики, при их сборе, подготовке, обработке и так далее. Приведу ряд соображений и размышлений для примера:
1. Для простых данных в виде плоских таблиц можно использовать различные SQL-базы с внешней обвязкой метаданными. Но, случаи когда используются только простые таблицы редки, чаще всего данные обладают иерархией и вложенностью. Эту иерархию и вложенность можно привести к SQL сильно увеличив число таблиц, или же использовать NoSQL подход брать за основу CouchDb, MongoDb или их аналоги или семантические triple-store.
2. До сих пор очень мало практических инструментов по работе с NoSQL данными. Практически нет ETL инструментов, BI движков, ORM библиотек и прочего разного. Во многом от того что сама концепция NoSQL только сейчас приобретает признаки тренда и нет единых стандартов по доступа к такого рода данным.
3. На самом деле обработка большого объёма разноформатной информации это ещё и до сих пор не решённая исследовательская задача. Большинство же практических систем, например, поисковых, либо нормализуют источники информации и получаемые данные, либо резко ограничивают их число и связывают информацию в этих источниках вручную. Например, поисковики вроде Google или Yahoo нормализуют весь веб к веб-страницам, а в WolfRam Alpha используется большое число массивов данных вручную нормализованных, в основном, по формам выдачи результатов. Задачу же автоматической или автоматизированной интеграции тысяч и десятков тысяч источников информации решить было бы очень интересно, но лично я понимаю всю её объективную сложность.
4. Онтологии – это правильно, хорошо и идеалистично. К живым данным они имеют весьма слабое отношение и тут скорее можно говорить об онтологии извлечения и обработки информации. Некой единой модели которая бы всё это описывала. Но это ещё одна большая и непростая исследовательская задача пока ещё далёкая от решения.
5. Один большой вопрос – это работа с аномалиями, когда получаемые из источника информации данные не соответствуют заявленному формату. Причём в случаях если подобные аномалии возникают в пределах данных, то это не то чтобы просто, но точно решается. А вот в случаях когда аномалии происходят на структурном уровне – последовательности полей или их разделения, то тут решается сложнее. Локализацией участка и ручному анализу или же разработкой правил анализа отклонений на основе ранее выявленных ошибок. Одно можно сказать точно, в живых данных такие аномалии встречаются.
6. Кстати, говоря об аномалиях, нельзя не отметить ещё и тот факт что они сильно зависят от формы носителя информации – контейнера и от представления информации в этом контейнере. В практическом плане это выражается в том что в файлах Excel или DBF есть четкое разделение полей и хранение метаданных о типах данных в этих полях, а вот в HTML и, в некоторых случаях, в CSV такого нет или же, если есть, то этим метаданным нельзя доверять безоговорочно. Также с точки зрения выявления аномалий можно рассматривать любые полуструктурированные тексты устоявшегося написания той или иной информации – адресов, фамилий и так далее.


