SlideShare a Scribd company logo
1 of 10
MongoDB + Sphinx :
                             живем вместе
                          «построение архитектуры
                         высоконагруженного проекта»

         Евгений Дмитриченко,
         CTO
         компании «КвартСофт»
         dm@quartsoft.com

©2012. QuartSoft Corp.                           www.quartsoft.com
Сущности в системе
       Пользователи
       Категории (граф)
       Вопросы
       Ответы
       Комментарии




©2012. QuartSoft Corp.     www.quartsoft.com   2
Необходимые представления
       Все посты пользователя: вопросы, ответы, комментарии
       Лента определенного вопроса: ответы, комментарии
       Все посты, удовлетворяющие условиям поиска
       Все посты из определенной категории
       Популярные вопросы
       …




©2012. QuartSoft Corp.                               www.quartsoft.com   3
MongoDB
       Документо-ориентированная система управления базами
      данных

       БД состоит из коллекций

       Коллекции состоят из документов

       Документы состоят из полей

       Выборки возвращают курсоры




©2012. QuartSoft Corp.                            www.quartsoft.com   4
MongoDB
       Отсутствие предопределенной структуры документа

       Быстрая асинхронная запись

       Горизонтальная масштабируемость

       MapReduce




©2012. QuartSoft Corp.                          www.quartsoft.com   5
Sphinx
       Система полнотекстового поиска

       Высокая скорость индексации и поиска

       Масштабируемость

       Интеграция с СУБД MySQL, PostgreSQL

       Xmlpipe




©2012. QuartSoft Corp.                         www.quartsoft.com   6
Проблема
           Нет прямой интеграции с MongoDB




                Решение

               Строим индекс с помощью xmlpipe2




©2012. QuartSoft Corp.                            www.quartsoft.com   7
Проблема
          Sphinx не позволяет использовать буквенно-цифровые значения
          в качестве ID документов


                Решение
             Генерировать для каждого mongo-документа
             пользовательский (сгенерированный руками либо
             автоинкрементом в MySQL) цифровой ID:

             { "_id" : ObjectId("4bf2c7f38ead0e0d05070000"), "sid" : 7, "text" :
             "Много текста" }
©2012. QuartSoft Corp.                                          www.quartsoft.com   8
Ссылки


           • http://www.mongodb.org/
           • The little MongoDB book (http://express-js.ru/mongo-
           book/)
           • http://sphinxsearch.com




©2012. QuartSoft Corp.                                  www.quartsoft.com   9
Вопросы? Спасибо!
    Дмитриченко Евгений
    CTO
    компании «КвартСофт»


    dm@quartsoft.com
    quartsoft.com


©2012. QuartSoft Corp.                       www.quartsoft.com   10

More Related Content

What's hot

Электронная подпись в Docsvision 5
Электронная подпись в Docsvision 5Электронная подпись в Docsvision 5
Электронная подпись в Docsvision 5Docsvision
 
Как снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проектКак снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проектsportgid
 
Электронно-цифровая подпись в Docsvision 5
Электронно-цифровая подпись в Docsvision 5Электронно-цифровая подпись в Docsvision 5
Электронно-цифровая подпись в Docsvision 5Docsvision
 
Blockchain and tokens v5
Blockchain and tokens v5Blockchain and tokens v5
Blockchain and tokens v5Bekhzod N
 
Облачное хранилище «Битрикс24.Диск
Облачное хранилище «Битрикс24.ДискОблачное хранилище «Битрикс24.Диск
Облачное хранилище «Битрикс24.ДискCIT TROYA
 
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)Ontico
 
Использование различных СУБД в высоконагруженных проектах
Использование различных СУБД в высоконагруженных проектахИспользование различных СУБД в высоконагруженных проектах
Использование различных СУБД в высоконагруженных проектахMedia Gorod
 
Компания "Эврика Би Пи О"
Компания "Эврика Би Пи О"Компания "Эврика Би Пи О"
Компания "Эврика Би Пи О"Eureka BPO, Ltd.
 

What's hot (8)

Электронная подпись в Docsvision 5
Электронная подпись в Docsvision 5Электронная подпись в Docsvision 5
Электронная подпись в Docsvision 5
 
Как снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проектКак снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проект
 
Электронно-цифровая подпись в Docsvision 5
Электронно-цифровая подпись в Docsvision 5Электронно-цифровая подпись в Docsvision 5
Электронно-цифровая подпись в Docsvision 5
 
Blockchain and tokens v5
Blockchain and tokens v5Blockchain and tokens v5
Blockchain and tokens v5
 
Облачное хранилище «Битрикс24.Диск
Облачное хранилище «Битрикс24.ДискОблачное хранилище «Битрикс24.Диск
Облачное хранилище «Битрикс24.Диск
 
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
 
Использование различных СУБД в высоконагруженных проектах
Использование различных СУБД в высоконагруженных проектахИспользование различных СУБД в высоконагруженных проектах
Использование различных СУБД в высоконагруженных проектах
 
Компания "Эврика Би Пи О"
Компания "Эврика Би Пи О"Компания "Эврика Би Пи О"
Компания "Эврика Би Пи О"
 

Similar to Sphinx + MongoDB: работаем вместе.

Переход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойПереход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойAlexander Byndyu
 
What do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptWhat do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptVasiliy Teliatnikov
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET CoreAndrew Gubskiy
 
Переход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойПереход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойAlexander Byndyu
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in RussianOleg Kachan
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseAlexander Granin
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только одинHappyDev
 
Комплексное решение Linux Wizard для ОУ (1 марта 2012)
Комплексное решение Linux Wizard для ОУ (1 марта 2012)Комплексное решение Linux Wizard для ОУ (1 марта 2012)
Комплексное решение Linux Wizard для ОУ (1 марта 2012)Penguin Tux
 
Моделирование для NoSQL БД
Моделирование для NoSQL БДМоделирование для NoSQL БД
Моделирование для NoSQL БДAndrew Sovtsov
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Ontico
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинSergey Xek
 
Комплексное Предложение Linux Wizard для школ Санкт-Петербурга и Ленинградско...
Комплексное Предложение Linux Wizard для школ Санкт-Петербурга и Ленинградско...Комплексное Предложение Linux Wizard для школ Санкт-Петербурга и Ленинградско...
Комплексное Предложение Linux Wizard для школ Санкт-Петербурга и Ленинградско...Penguin Tux
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Alexey Zinoviev
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаSQALab
 
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...Provectus
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Tanya Denisyuk
 

Similar to Sphinx + MongoDB: работаем вместе. (20)

Переход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойПереход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределенной
 
What do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptWhat do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScript
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
Переход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойПереход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределенной
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in Russian
 
Highload 2011-demona
Highload 2011-demonaHighload 2011-demona
Highload 2011-demona
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом Enterprise
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
 
Комплексное решение Linux Wizard для ОУ (1 марта 2012)
Комплексное решение Linux Wizard для ОУ (1 марта 2012)Комплексное решение Linux Wizard для ОУ (1 марта 2012)
Комплексное решение Linux Wizard для ОУ (1 марта 2012)
 
Моделирование для NoSQL БД
Моделирование для NoSQL БДМоделирование для NoSQL БД
Моделирование для NoSQL БД
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
Комплексное Предложение Linux Wizard для школ Санкт-Петербурга и Ленинградско...
Комплексное Предложение Linux Wizard для школ Санкт-Петербурга и Ленинградско...Комплексное Предложение Linux Wizard для школ Санкт-Петербурга и Ленинградско...
Комплексное Предложение Linux Wizard для школ Санкт-Петербурга и Ленинградско...
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проекта
 
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...
SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...
SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...
 
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
 

More from MageCloud

How to find the Right Mobile and Cloud Application Development Company for Yo...
How to find the Right Mobile and Cloud Application Development Company for Yo...How to find the Right Mobile and Cloud Application Development Company for Yo...
How to find the Right Mobile and Cloud Application Development Company for Yo...MageCloud
 
First Steps to Mobile Sites and Apps
First Steps to Mobile Sites and AppsFirst Steps to Mobile Sites and Apps
First Steps to Mobile Sites and AppsMageCloud
 
Optimizing Magento for Peak Performance
Optimizing Magento for Peak PerformanceOptimizing Magento for Peak Performance
Optimizing Magento for Peak PerformanceMageCloud
 
Cloud Based Business Application Development
Cloud Based Business Application DevelopmentCloud Based Business Application Development
Cloud Based Business Application DevelopmentMageCloud
 
Three keys to successful banner ads
Three keys to successful banner adsThree keys to successful banner ads
Three keys to successful banner adsMageCloud
 
Two Facets of Great e-Commerce: PPC and Landing Page Best Practices
Two Facets of Great e-Commerce: PPC and Landing Page Best PracticesTwo Facets of Great e-Commerce: PPC and Landing Page Best Practices
Two Facets of Great e-Commerce: PPC and Landing Page Best PracticesMageCloud
 
Yii development
Yii developmentYii development
Yii developmentMageCloud
 
Security testing
Security testingSecurity testing
Security testingMageCloud
 
Project lifecircle
Project lifecircleProject lifecircle
Project lifecircleMageCloud
 
Management of projects
Management of projectsManagement of projects
Management of projectsMageCloud
 
Magento ecommerce
Magento ecommerceMagento ecommerce
Magento ecommerceMageCloud
 
Dotnet development
Dotnet developmentDotnet development
Dotnet developmentMageCloud
 
Corporate structure project_team
Corporate structure project_teamCorporate structure project_team
Corporate structure project_teamMageCloud
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationMageCloud
 
Clientside optimization
Clientside optimizationClientside optimization
Clientside optimizationMageCloud
 
Automated testing
Automated testingAutomated testing
Automated testingMageCloud
 

More from MageCloud (20)

How to find the Right Mobile and Cloud Application Development Company for Yo...
How to find the Right Mobile and Cloud Application Development Company for Yo...How to find the Right Mobile and Cloud Application Development Company for Yo...
How to find the Right Mobile and Cloud Application Development Company for Yo...
 
First Steps to Mobile Sites and Apps
First Steps to Mobile Sites and AppsFirst Steps to Mobile Sites and Apps
First Steps to Mobile Sites and Apps
 
Optimizing Magento for Peak Performance
Optimizing Magento for Peak PerformanceOptimizing Magento for Peak Performance
Optimizing Magento for Peak Performance
 
Cloud Based Business Application Development
Cloud Based Business Application DevelopmentCloud Based Business Application Development
Cloud Based Business Application Development
 
Three keys to successful banner ads
Three keys to successful banner adsThree keys to successful banner ads
Three keys to successful banner ads
 
Two Facets of Great e-Commerce: PPC and Landing Page Best Practices
Two Facets of Great e-Commerce: PPC and Landing Page Best PracticesTwo Facets of Great e-Commerce: PPC and Landing Page Best Practices
Two Facets of Great e-Commerce: PPC and Landing Page Best Practices
 
Yii development
Yii developmentYii development
Yii development
 
Testing
TestingTesting
Testing
 
Security testing
Security testingSecurity testing
Security testing
 
Project lifecircle
Project lifecircleProject lifecircle
Project lifecircle
 
Management of projects
Management of projectsManagement of projects
Management of projects
 
Magento ecommerce
Magento ecommerceMagento ecommerce
Magento ecommerce
 
Graphics
GraphicsGraphics
Graphics
 
Dotnet development
Dotnet developmentDotnet development
Dotnet development
 
Corporate structure project_team
Corporate structure project_teamCorporate structure project_team
Corporate structure project_team
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Clientside optimization
Clientside optimizationClientside optimization
Clientside optimization
 
Automated testing
Automated testingAutomated testing
Automated testing
 
Amazon
AmazonAmazon
Amazon
 
Agile
AgileAgile
Agile
 

Sphinx + MongoDB: работаем вместе.

  • 1. MongoDB + Sphinx : живем вместе «построение архитектуры высоконагруженного проекта» Евгений Дмитриченко, CTO компании «КвартСофт» dm@quartsoft.com ©2012. QuartSoft Corp. www.quartsoft.com
  • 2. Сущности в системе  Пользователи  Категории (граф)  Вопросы  Ответы  Комментарии ©2012. QuartSoft Corp. www.quartsoft.com 2
  • 3. Необходимые представления  Все посты пользователя: вопросы, ответы, комментарии  Лента определенного вопроса: ответы, комментарии  Все посты, удовлетворяющие условиям поиска  Все посты из определенной категории  Популярные вопросы  … ©2012. QuartSoft Corp. www.quartsoft.com 3
  • 4. MongoDB  Документо-ориентированная система управления базами данных  БД состоит из коллекций  Коллекции состоят из документов  Документы состоят из полей  Выборки возвращают курсоры ©2012. QuartSoft Corp. www.quartsoft.com 4
  • 5. MongoDB  Отсутствие предопределенной структуры документа  Быстрая асинхронная запись  Горизонтальная масштабируемость  MapReduce ©2012. QuartSoft Corp. www.quartsoft.com 5
  • 6. Sphinx  Система полнотекстового поиска  Высокая скорость индексации и поиска  Масштабируемость  Интеграция с СУБД MySQL, PostgreSQL  Xmlpipe ©2012. QuartSoft Corp. www.quartsoft.com 6
  • 7. Проблема Нет прямой интеграции с MongoDB Решение Строим индекс с помощью xmlpipe2 ©2012. QuartSoft Corp. www.quartsoft.com 7
  • 8. Проблема Sphinx не позволяет использовать буквенно-цифровые значения в качестве ID документов Решение Генерировать для каждого mongo-документа пользовательский (сгенерированный руками либо автоинкрементом в MySQL) цифровой ID: { "_id" : ObjectId("4bf2c7f38ead0e0d05070000"), "sid" : 7, "text" : "Много текста" } ©2012. QuartSoft Corp. www.quartsoft.com 8
  • 9. Ссылки • http://www.mongodb.org/ • The little MongoDB book (http://express-js.ru/mongo- book/) • http://sphinxsearch.com ©2012. QuartSoft Corp. www.quartsoft.com 9
  • 10. Вопросы? Спасибо! Дмитриченко Евгений CTO компании «КвартСофт» dm@quartsoft.com quartsoft.com ©2012. QuartSoft Corp. www.quartsoft.com 10