SlideShare a Scribd company logo
1 of 25
Marklogic
  как обуздать сотни гигабайт
  слабо-структурированных данных


Антон Язовский
Тамтэк, Омск

@yazovsky
ayazovskiy@thumbtack.net
О чем проект?




                1/21
О чем проект?

•   обрабатывать данные из различных источников

•   позволять искать по сложным запросам

•   показывать слабо-структурированную информацию

•   бизнес логика

•   e-commerce (продажи, куда без них)

•   social

•   etc..




                                                    2/21
О чем проект?

•   15 млн документов с перспективой в 100 млн

•   предоставлять удобный способ поиска

•   масштабироваться горизонтально

•   гибкость к изменению формата данных VS валидация данных
    на соответствие базовым правилам

•   обладать высокой отказоустойчивостью




                                                              3/21
«MarkLogic Server is a document-centric, transactional,
search-centric, structure-aware, schema-agnostic,
XQuery- and XSLT-driven, high performance, clustered,
database server»




                                                          4/21
«MarkLogic Server is a document-centric, transactional,
search-centric, structure-aware, schema-agnostic,
XQuery- and XSLT-driven, high performance, clustered,
database server»

… масштабируемое транзакционное …




                                                          4/21
«MarkLogic Server is a document-centric, transactional,
search-centric, structure-aware, schema-agnostic,
XQuery- and XSLT-driven, high performance, clustered,
database server»

… масштабируемое транзакционное хранилище
документов …




                                                          4/21
«MarkLogic Server is a document-centric, transactional,
search-centric, structure-aware, schema-agnostic,
XQuery- and XSLT-driven, high performance, clustered,
database server»

… масштабируемое транзакционное хранилище
документов с обширными возможностями поиска
используя языки XQuery и/или XSLT…


                                                          4/21
Marklogic

•   актуальный релиз - 6 (19 сентября, 2012)

•   номер один XML хранилище в мире *

    Среди клиентов:

•   Организаторы летних олимпийских игр в Лондоне 2012

•   Федеральное управление гражданской авиации США

•   Департамент транспорта США

•   The Defense Information Systems Agency



                                                         5/21
Marklogic




            6/21
Документо-ориентированная

<document
            xsi:schemaLocation="http://yoursite.com/article article.xsd”
            xmlns:dc="http://yoursite.com/dc"
            xmlns="http://marklogic.com/articl"
            uri=”/article/maxim/123”>

            <meta>
                       <dc:type>journal-article</dc:type>
                       <dc:title>Анна Курникова</dc:title>
                       <source uri=”/journal/maxim”>MAXIM</source>
                       <pub_year>2004</pub_year>
            </meta>
            <body> images!!! </body>


</document>


                                                                           7/21
Документо-ориентированная

•   избыточный синтаксис

•   ограниченность иерархической модели данных (где мои join'ы?!)

•   неоднозначность структуры

•   XML - прошлый век! JSON - рулит! :)




                                                                    8/21
Документо-ориентированная

•   открытый W3C стандарт

•   простой, человеко-читаемый формат

•   способы гибкой валидации (привет XSD, DTD)

•   инструменты преобразования и визуализации (всемогущий XSL)

•   языки запросов xQuery, xPath (W3C)




                                                                 9/21
Schema Agnostic

                  •   слабо-структурированные
                      данные VS схема!

                  •   фокус на элементы, а не на
                      структуру




                                           10/21
Search Centric

                 •   XDBC

                 •   HTTP

                 •   WebDAV


                 •   клиентская библиотека

                 •   REST API

                 •   web интерфейс




                                             11/21
Search Centric

•   полнотекстовый поиск

    search:search("blackjack and hookers")

•   поиск по значениям элемента или аттрибута

•   range индексы (искать с используя сравнения - “>”, “<”, “=”)

•   fields - alias для набора элементов

•   facets, подсказки, геолокационные запросы

•   и еще около сотни поисковых функций




                                                                   12/21
Search Centric




                 13/21
Масштабируемость




                   14/21
Масштабируемость

Forest - это репозиторий документов (папка на диске)

Host / Node - это один экземпляр Marklogic Server

Роли: Data Node (d-node) и Evaluator Node (e-node)




                                                       15/21
Масштабируемость




                   16/21
Масштабируемость

•   одна редакция Marklogic Server

•   внешний load-balancer

•   одна платформа на кластер

•   shared nothing архитектура




                                     17/21
Отказоустойчивость

•   они настоящая команда!

•   heartbeat внутри кластера

•   автоматическое управление составом кластера

•   взаимовыручка




                                                  18/21
«Один за всех - и все за одного!»
                      д'Артаньян одобряет




                                            19/21
Оно того стоит?




                  20/21
21/21

More Related Content

Similar to Антон Язовский - Marklogic: как обуздать сотни гигабайт неструктурированных данных | HappyDev'12

Масштабирование от клиента к серверу. От РМД к хранилищам и от хранилищ к sem...
Масштабирование от клиента к серверу. От РМД к хранилищам и от хранилищ к sem...Масштабирование от клиента к серверу. От РМД к хранилищам и от хранилищ к sem...
Масштабирование от клиента к серверу. От РМД к хранилищам и от хранилищ к sem...Marcus Akoev
 
Организация базы знаний проектной деятельности предприятия
Организация базы знаний проектной деятельности предприятияОрганизация базы знаний проектной деятельности предприятия
Организация базы знаний проектной деятельности предприятияVasily Kazakov
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesDenis Izmaylov
 
Моделирование для NoSQL БД
Моделирование для NoSQL БДМоделирование для NoSQL БД
Моделирование для NoSQL БДAndrew Sovtsov
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricksSveta Bozhko
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в ЯндексеYandex
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchИлья Середа
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"IT Event
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.mikhaelsmirnov
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...Vyacheslav Nikulin
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в ЯндексеYandex
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в ЯндексеYandex
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаSQALab
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковMaxim Zinal
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиElizaveta Alekseeva
 
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...HappyDev-lite
 
JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianMikhail Davydov
 

Similar to Антон Язовский - Marklogic: как обуздать сотни гигабайт неструктурированных данных | HappyDev'12 (20)

Масштабирование от клиента к серверу. От РМД к хранилищам и от хранилищ к sem...
Масштабирование от клиента к серверу. От РМД к хранилищам и от хранилищ к sem...Масштабирование от клиента к серверу. От РМД к хранилищам и от хранилищ к sem...
Масштабирование от клиента к серверу. От РМД к хранилищам и от хранилищ к sem...
 
Druid - Interactive Analytics At Scale
Druid - Interactive Analytics At ScaleDruid - Interactive Analytics At Scale
Druid - Interactive Analytics At Scale
 
Организация базы знаний проектной деятельности предприятия
Организация базы знаний проектной деятельности предприятияОрганизация базы знаний проектной деятельности предприятия
Организация базы знаний проектной деятельности предприятия
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
 
Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 
Моделирование для NoSQL БД
Моделирование для NoSQL БДМоделирование для NoSQL БД
Моделирование для NoSQL БД
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricks
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в Яндексе
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearch
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.
 
Cassandra db
Cassandra dbCassandra db
Cassandra db
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в Яндексе
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в Яндексе
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проекта
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитики
 
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
 
JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in Russian
 

More from HappyDev

2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...HappyDev
 
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli scriptHappyDev
 
2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?HappyDev
 
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данныхHappyDev
 
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...HappyDev
 
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложенийHappyDev
 
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложенийHappyDev
 
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBenchHappyDev
 
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестированииHappyDev
 
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...HappyDev
 
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...HappyDev
 
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...HappyDev
 
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерахHappyDev
 
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...HappyDev
 
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...HappyDev
 
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...HappyDev
 
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхроннымHappyDev
 
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...HappyDev
 
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых системHappyDev
 
2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...
2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...
2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...HappyDev
 

More from HappyDev (20)

2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
 
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
 
2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?
 
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
 
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
 
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
 
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
 
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
 
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
 
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
 
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
 
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
 
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
 
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
 
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
 
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
 
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
 
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
 
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
 
2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...
2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...
2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...
 

Антон Язовский - Marklogic: как обуздать сотни гигабайт неструктурированных данных | HappyDev'12

  • 1. Marklogic как обуздать сотни гигабайт слабо-структурированных данных Антон Язовский Тамтэк, Омск @yazovsky ayazovskiy@thumbtack.net
  • 3. О чем проект? • обрабатывать данные из различных источников • позволять искать по сложным запросам • показывать слабо-структурированную информацию • бизнес логика • e-commerce (продажи, куда без них) • social • etc.. 2/21
  • 4. О чем проект? • 15 млн документов с перспективой в 100 млн • предоставлять удобный способ поиска • масштабироваться горизонтально • гибкость к изменению формата данных VS валидация данных на соответствие базовым правилам • обладать высокой отказоустойчивостью 3/21
  • 5. «MarkLogic Server is a document-centric, transactional, search-centric, structure-aware, schema-agnostic, XQuery- and XSLT-driven, high performance, clustered, database server» 4/21
  • 6. «MarkLogic Server is a document-centric, transactional, search-centric, structure-aware, schema-agnostic, XQuery- and XSLT-driven, high performance, clustered, database server» … масштабируемое транзакционное … 4/21
  • 7. «MarkLogic Server is a document-centric, transactional, search-centric, structure-aware, schema-agnostic, XQuery- and XSLT-driven, high performance, clustered, database server» … масштабируемое транзакционное хранилище документов … 4/21
  • 8. «MarkLogic Server is a document-centric, transactional, search-centric, structure-aware, schema-agnostic, XQuery- and XSLT-driven, high performance, clustered, database server» … масштабируемое транзакционное хранилище документов с обширными возможностями поиска используя языки XQuery и/или XSLT… 4/21
  • 9. Marklogic • актуальный релиз - 6 (19 сентября, 2012) • номер один XML хранилище в мире * Среди клиентов: • Организаторы летних олимпийских игр в Лондоне 2012 • Федеральное управление гражданской авиации США • Департамент транспорта США • The Defense Information Systems Agency 5/21
  • 10. Marklogic 6/21
  • 11. Документо-ориентированная <document xsi:schemaLocation="http://yoursite.com/article article.xsd” xmlns:dc="http://yoursite.com/dc" xmlns="http://marklogic.com/articl" uri=”/article/maxim/123”> <meta> <dc:type>journal-article</dc:type> <dc:title>Анна Курникова</dc:title> <source uri=”/journal/maxim”>MAXIM</source> <pub_year>2004</pub_year> </meta> <body> images!!! </body> </document> 7/21
  • 12. Документо-ориентированная • избыточный синтаксис • ограниченность иерархической модели данных (где мои join'ы?!) • неоднозначность структуры • XML - прошлый век! JSON - рулит! :) 8/21
  • 13. Документо-ориентированная • открытый W3C стандарт • простой, человеко-читаемый формат • способы гибкой валидации (привет XSD, DTD) • инструменты преобразования и визуализации (всемогущий XSL) • языки запросов xQuery, xPath (W3C) 9/21
  • 14. Schema Agnostic • слабо-структурированные данные VS схема! • фокус на элементы, а не на структуру 10/21
  • 15. Search Centric • XDBC • HTTP • WebDAV • клиентская библиотека • REST API • web интерфейс 11/21
  • 16. Search Centric • полнотекстовый поиск search:search("blackjack and hookers") • поиск по значениям элемента или аттрибута • range индексы (искать с используя сравнения - “>”, “<”, “=”) • fields - alias для набора элементов • facets, подсказки, геолокационные запросы • и еще около сотни поисковых функций 12/21
  • 17. Search Centric 13/21
  • 19. Масштабируемость Forest - это репозиторий документов (папка на диске) Host / Node - это один экземпляр Marklogic Server Роли: Data Node (d-node) и Evaluator Node (e-node) 15/21
  • 21. Масштабируемость • одна редакция Marklogic Server • внешний load-balancer • одна платформа на кластер • shared nothing архитектура 17/21
  • 22. Отказоустойчивость • они настоящая команда! • heartbeat внутри кластера • автоматическое управление составом кластера • взаимовыручка 18/21
  • 23. «Один за всех - и все за одного!» д'Артаньян одобряет 19/21
  • 25. 21/21