Егор Савочкин, ЛАНИТ
“Как мы выбирали PostgreSQL для ГИС ЖКХ”
Встреча #TechGuruDay #PostgreSQLRussia в компании ЛАНИТ, 12.02.2016
Ссылки:
Видео - https://www.youtube.com/watch?v=OO-rlCkaDSM&feature=youtu.be
Сообщество PostgreSQLRussia - http://PostgreSQLRussia.org
ЛАНИТ - http://lanit.ru/structure/department_of_corporate_systems.php, https://job.lanit.ru/
Полная запись со встречи - https://www.youtube.com/watch?v=syFnwghfR98&feature=youtu.be
2. Основные параметры / требования
• Сложный функционал
• ЖК РФ,
• 209-ФЗ и т.д.
• Масштабирование на всю
Россию
• 50 млн домохозяйств,
• 200 тыс УО/РСО,
• органы власти и тд
• 24x7
• Разные клиенты –
браузер, мобильный,
ЕПГУ и тп www.dom.gosuslugi.ru
• 3000 запросов/сек
• 60 ТБ прирост данных в
год
• Команда 150+ человек
• Свободное ПО или ПО с
открытым кодом
• Максимально
распространенное
железо
Tech GURU Day, LANIT 12.02.2016 2
4. Муки выбора
• NoSQL… Cassandra? MongoDB?...
• Нет распределенных транзакций, ненормализованные данные/агрегаты
• Искать по вторичным ключам – не просто, нужны спец средства
• Боимся потерять целостность
• Нас всех учили долго использовать реляционные СУБД
• Поизучали и побоялись все делать на NoSQL…
• Решили использовать точечно
• Реляционная БД…сделали ставку на РСУБД PostgreSQL
• Как PostgreSQL поведет себя под нагрузкой?
• Как долго переучивать людей с Oracleна PostgreSQL?
• Насколько адекватен инструментарий?
• Не понятная ситуация с саппортом
Tech GURU Day, LANIT 12.02.2016 4
6. Функциональный прототип и НТ
• Цель
• Проверить возможность реализовать приближенный к
реальности функционал с использованием PostgreSQL
• Проверить возможности масштабирования СУБД
PostgreSQL и ее работоспособность в стрессовых
сценариях
• Проверить работу failover конфигурации
• Данные
• 40 млн квартир
• 200 тыс УО, 40 тыс РСО
• 1 млн МКД, 10 тыс муниципалитетов
• Функционал
• Ввод/чтение показаний ПУ
• Ввод счетов на оплату
• Получение фактов оплаты счета
• Формирование отчета от задолженности
• Импортсчетов
• Экспорт показаний ПУ
Tech GURU Day, LANIT 12.02.2016 6
7. Результаты
Сценарий
Требуемый
RPS
RPS_postgre
sql
CPU_av_postg
resql
IOPS_postgr
esql
Сценарий 1. Обновление показаний
всех счетчиков ОУ
139
8333
Сценарий 2. Обновление показаний
всех счетчиков МКД
29
6172 64 1363
Сценарий 3. Чтение показаний всех
счетчиков ОУ
139
22478
Сценарий 4. Чтение показаний всех
счетчиков МКД
29
8653 44 384
Сценарий 5. Запись счетов на оплату
для ОУ
579
3472
Сценарий 6. Запись счетов на оплату
для МКД
11,57
4578 48 3478
Сценарий 7. Запись платежей ОУ 19 15087 77 1831
Сценарий 8. Получение отчета о
кредиторской и дебиторской
задолженностях (ОУ)
578
35410 52 44
Сценарий 9. Получение отчета о
кредиторской и дебиторской
задолженностях (муниципалитет)
0,1
76 19 418
Сценарий 10. Получение отчета о
кредиторской и дебиторской
задолженностях (РСО)
0,37
3750 3 170
Сценарий 11. Получение информации
о нормативах
0,73
13503 31 645
Сценарий 12. Композитный тест 2564 17 1888
Обозначение Описание оборудования Кол-во
x86-1,…, x86-6 Cisco UCS B200 M3 Blade Server 2 CPU E5 2650 8 cores, 128Gb 6
IBM p770 IBM Power 770 16 cores 3,1Ghz Power7, 128Gb RAM 1
HUS Hitachi HUS110 5x2Тб SATA, 48x300Гб SAS 10k 1
SAN IBM System Storage SAN40B-4, 8 Gbps 2
IBM p750 IBM Power 750 8 cores 3.3 GHz Power7, 64Gb RAM 1
• Реализовали приближенный к реальному
функционал на РСУБД PostgreSQL
• Сделали стресс-тесты – высокая нагрузка по
каждомусценариюпо отдельности
• Попробовали композитный тест – все
сценарии одновременно нагружаются в
соответствии с профилем нагрузки
• Попробовали failover
• НТ выполнялся специалистами в Oracle,
прошедшими краткий курс обучения
PostgreSQL. Не выполняли тонкую
оптимизациюи т.п.
Tech GURU Day, LANIT 12.02.2016 7