SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Электронная подпись в Docsvision 5
Электронная подпись в Docsvision 5Электронная подпись в Docsvision 5
Электронная подпись в Docsvision 5
Docsvision
 
Как снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проектКак снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проект
sportgid
 
Электронно-цифровая подпись в Docsvision 5
Электронно-цифровая подпись в Docsvision 5Электронно-цифровая подпись в Docsvision 5
Электронно-цифровая подпись в Docsvision 5
Docsvision
 
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Ontico
 
Использование различных СУБД в высоконагруженных проектах
Использование различных СУБД в высоконагруженных проектахИспользование различных СУБД в высоконагруженных проектах
Использование различных СУБД в высоконагруженных проектах
Media Gorod
 

Tendances (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.Диск
 
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
 
Использование различных СУБД в высоконагруженных проектах
Использование различных СУБД в высоконагруженных проектахИспользование различных СУБД в высоконагруженных проектах
Использование различных СУБД в высоконагруженных проектах
 
Компания "Эврика Би Пи О"
Компания "Эврика Би Пи О"Компания "Эврика Би Пи О"
Компания "Эврика Би Пи О"
 

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

2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
HappyDev
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Ontico
 
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Provectus
 

Similaire à 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-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
 
Комплексное Предложение 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...
 

Plus de MageCloud

Yii development
Yii developmentYii development
Yii development
MageCloud
 
Security testing
Security testingSecurity testing
Security testing
MageCloud
 
Project lifecircle
Project lifecircleProject lifecircle
Project lifecircle
MageCloud
 
Management of projects
Management of projectsManagement of projects
Management of projects
MageCloud
 
Magento ecommerce
Magento ecommerceMagento ecommerce
Magento ecommerce
MageCloud
 
Dotnet development
Dotnet developmentDotnet development
Dotnet development
MageCloud
 
Corporate structure project_team
Corporate structure project_teamCorporate structure project_team
Corporate structure project_team
MageCloud
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
MageCloud
 
Clientside optimization
Clientside optimizationClientside optimization
Clientside optimization
MageCloud
 
Automated testing
Automated testingAutomated testing
Automated testing
MageCloud
 

Plus de 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