Как мы храним дружбы.
Что такое «дружба» и зачем она нужна.
Требования заказчика:
•   Ребер → 109
•   Вершин → 5 · 107
•   Соединений → 2000 – 5000
•   Запросов → 12000 – 20000 в сек.
•   Обновлений → 200 – 1000 в сек.
•   Данных на ребре → 6 байт
Типы запросов:
• Высокой актуальности:
  – Мои друзья (прямые связи)
  – Обратные связи
• Средней актуальности:
  – Общие друзья
  – Друзья моих друзей
  – Я знаком с Васей через Петю и Машу
Граф в реляционной базе
Таблица смежности
 Вася     Петя     Дружит       30 байт заголовка
 Маша     Костю    Дружит       14 байт данных
 Катя     Дашу     Ненавидит    80 байт с индексами


– Сложность поиска пути
– Сложности с друзьями друзей
Что можно предпринять?
• Упаковать данные          Вася
  – Фрагментация            Катя
  – Сложно писать запросы   Маша

• Кеширование
  – Построчно – бессмысленно
  – Запросы целиком – сложно инвалидировать
Наш ответ
• Не надо изобретать велосипеды.
  – slab аллокатор , сетевое ядро из memcached
  – khash.h
  – libev
• Чем проще – тем надежнее.
  – Простота устройства – легкость
    сопровождения.
In memory storage
  hash               slabs   buffers
  A                           1GB
  B
 C                  22GB
 1GB
                             ∑ = 24GB
Сетевая подсистема
• fork() — невозможно
• -lpthread — сложно разрабатывать и
            отлаживать
• FSM
  – решение проблемы 10k
  – сложно с обрабатывать вычислительные запросы
  – запись на диск – отдельным процессом
Persistance
   T0             T1
                            T2

– snapshot
– WAL
– Надежное чтение – CRC32
Persistance
              parent    fork   child




 req           writer          HDD
Hot standby
   – bind() – может быть только один
   – Пока не можем bind() – проигрываем все
     новое и отвечаем на запросы
   – Начальный load balancing

      A               port               B
Резервное копирование и репликация
• Новые данные на диск пишутся только в
  режиме O_APPEND → rsync!
• WAL log player
• Реплики только для чтения
  – direct
  – light
Спасибо за внимание. Вопросы?

More Related Content

PDF
Бинарные (файловые) хранилища: страшная сказка с мрачным концом / Даниил Подо...
PPTX
опыт построения и эксплуатации большого файлового хранилища
PDF
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
PPTX
Mysql vs postgresql
PPTX
Спасение 6 миллионов файлов в условиях полного Хецнера
PPTX
Cassandra: быстрая запись данных в высоконагруженных системах
PPTX
Введение в Apache Cassandra
PPT
Алексей Чумаков. Apache Cassandra на реальном проекте
Бинарные (файловые) хранилища: страшная сказка с мрачным концом / Даниил Подо...
опыт построения и эксплуатации большого файлового хранилища
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
Mysql vs postgresql
Спасение 6 миллионов файлов в условиях полного Хецнера
Cassandra: быстрая запись данных в высоконагруженных системах
Введение в Apache Cassandra
Алексей Чумаков. Apache Cassandra на реальном проекте

What's hot (18)

PPT
Как устроен NoSQL, Андрей Аксенов (Sphinx)
PPTX
MongoDB. Как готовить, с чем едят?
PDF
Загрузка больших объемов данных для бизнес-аналитики
PPTX
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
PDF
Frontera обход испанского интернета
PPTX
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
PDF
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
PDF
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
PDF
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
PDF
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
PPTX
Как устроен поиск / Андрей Аксенов (Sphinx)
PDF
AVITO. Решардинг Redis без даунтайма. DevConf 2012
PDF
SphinxSearch Meetup - Tips&tricks
PPT
Drupalconf moscow-2012-arkharov
PDF
Near-realtime аналитика событий в высоконагруженном проекте
PPT
Introduction to MongoDB
PPTX
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
Как устроен NoSQL, Андрей Аксенов (Sphinx)
MongoDB. Как готовить, с чем едят?
Загрузка больших объемов данных для бизнес-аналитики
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Frontera обход испанского интернета
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
Как устроен поиск / Андрей Аксенов (Sphinx)
AVITO. Решардинг Redis без даунтайма. DevConf 2012
SphinxSearch Meetup - Tips&tricks
Drupalconf moscow-2012-arkharov
Near-realtime аналитика событий в высоконагруженном проекте
Introduction to MongoDB
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
Ad

Viewers also liked (17)

PPT
Eremkin Cboss Smsc Hl2009
PPT
бегун
PPTX
PPT
Kosmodemiansky
POTX
Scalaxy
KEY
Nyt Prof 200910
PPT
архитектура новой почты рамблера
PPT
м.токовинин компромиссная производительность
PPT
Hl++2009 Ayakovlev Pochta
PDF
Dash Profiler 200910
PDF
Highload 2009
PDF
Smirnov Twisted Python
PPTX
Dz Java Hi Load 0.4
ODP
Krizhanovsky Vm
PPT
PPTX
PDF
Php Daemon
Eremkin Cboss Smsc Hl2009
бегун
Kosmodemiansky
Scalaxy
Nyt Prof 200910
архитектура новой почты рамблера
м.токовинин компромиссная производительность
Hl++2009 Ayakovlev Pochta
Dash Profiler 200910
Highload 2009
Smirnov Twisted Python
Dz Java Hi Load 0.4
Krizhanovsky Vm
Php Daemon
Ad

Similar to Silverspoon2 (20)

PDF
Purely practical data structures
PDF
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
PPT
phpConf 2010 Классификация систем хранения
PDF
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
PDF
Практика Lock-free. RealTime-сервер
PPT
Цена абстракции, Андрей Аксёнов (Sphinx)
PPTX
Cassandra
PDF
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
PDF
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
PDF
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
PDF
Tarantool/Silverbox (Юрий Востриков)
PDF
ekbpy'2012 - Данила Штань - Распределенное хранилище
PPTX
Hosting for forbes.ru_
ODP
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
PPTX
NoSQL - взрыв возможностей
PDF
Как мы храним 75 млн пользователей (Денис Бирюков)
PDF
Caching data outside Java Heap and using Shared Memory in Java
PPT
Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
PDF
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
PDF
Вы решили написать собственное хранилище (Илья Космодемьянский)
Purely practical data structures
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
phpConf 2010 Классификация систем хранения
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Практика Lock-free. RealTime-сервер
Цена абстракции, Андрей Аксёнов (Sphinx)
Cassandra
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
Tarantool/Silverbox (Юрий Востриков)
ekbpy'2012 - Данила Штань - Распределенное хранилище
Hosting for forbes.ru_
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
NoSQL - взрыв возможностей
Как мы храним 75 млн пользователей (Денис Бирюков)
Caching data outside Java Heap and using Shared Memory in Java
Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Вы решили написать собственное хранилище (Илья Космодемьянский)

More from HighLoad2009 (15)

PDF
Quick Wins
ODP
PPT
Hl2009 1c Bitrix
PDF
Highload Perf Tuning
PPT
Hl2009 Pr V2
PPTX
Highload2009
PPTX
особенности использования Times Ten In Memory Database в высоконагруженной среде
PPT
Hl Nekoval
PPTX
High Load 2009 Dimaa Rus Ready
PPTX
High Load 2009 Dimaa Rus Ready 16 9
PPTX
Pl High Load V1.1
PPTX
температура мира
PPT
бегун
PPT
Silverspoon Cluster
PDF
Performance Enhancements In Postgre Sql 8.4
Quick Wins
Hl2009 1c Bitrix
Highload Perf Tuning
Hl2009 Pr V2
Highload2009
особенности использования Times Ten In Memory Database в высоконагруженной среде
Hl Nekoval
High Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus Ready 16 9
Pl High Load V1.1
температура мира
бегун
Silverspoon Cluster
Performance Enhancements In Postgre Sql 8.4

Silverspoon2

  • 1. Как мы храним дружбы.
  • 2. Что такое «дружба» и зачем она нужна.
  • 3. Требования заказчика: • Ребер → 109 • Вершин → 5 · 107 • Соединений → 2000 – 5000 • Запросов → 12000 – 20000 в сек. • Обновлений → 200 – 1000 в сек. • Данных на ребре → 6 байт
  • 4. Типы запросов: • Высокой актуальности: – Мои друзья (прямые связи) – Обратные связи • Средней актуальности: – Общие друзья – Друзья моих друзей – Я знаком с Васей через Петю и Машу
  • 5. Граф в реляционной базе Таблица смежности Вася Петя Дружит 30 байт заголовка Маша Костю Дружит 14 байт данных Катя Дашу Ненавидит 80 байт с индексами – Сложность поиска пути – Сложности с друзьями друзей
  • 6. Что можно предпринять? • Упаковать данные Вася – Фрагментация Катя – Сложно писать запросы Маша • Кеширование – Построчно – бессмысленно – Запросы целиком – сложно инвалидировать
  • 7. Наш ответ • Не надо изобретать велосипеды. – slab аллокатор , сетевое ядро из memcached – khash.h – libev • Чем проще – тем надежнее. – Простота устройства – легкость сопровождения.
  • 8. In memory storage hash slabs buffers A 1GB B C 22GB 1GB ∑ = 24GB
  • 9. Сетевая подсистема • fork() — невозможно • -lpthread — сложно разрабатывать и отлаживать • FSM – решение проблемы 10k – сложно с обрабатывать вычислительные запросы – запись на диск – отдельным процессом
  • 10. Persistance T0 T1 T2 – snapshot – WAL – Надежное чтение – CRC32
  • 11. Persistance parent fork child req writer HDD
  • 12. Hot standby – bind() – может быть только один – Пока не можем bind() – проигрываем все новое и отвечаем на запросы – Начальный load balancing A port B
  • 13. Резервное копирование и репликация • Новые данные на диск пишутся только в режиме O_APPEND → rsync! • WAL log player • Реплики только для чтения – direct – light