КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge"....
description
Transcript of КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge"....
![Page 1: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/1.jpg)
Андрей Фролов, ведущий программист, Allods Team
БАЗЫ ДАННЫХ В ИГРАХ: ОТ АЛЛОДОВ ДО SKYFORGE
![Page 2: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/2.jpg)
2
КОРАБЛИ БОРОЗДЯТ…
![Page 3: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/3.jpg)
3
ВНЕЗАПНО!
![Page 4: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/4.jpg)
4
ПАНИКА
![Page 5: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/5.jpg)
5
БЕЗЫСХОДНОСТЬ
![Page 6: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/6.jpg)
6
Базы данных – критическая часть игрового сервера.
Небрежное отношение ведёт к катастрофе
![Page 7: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/7.jpg)
ПРОЕКТИРОВАНИЕ – ДЕЛО НЕ ПРОСТОЕ
• Надёжность• Производительность• Масштабирование• Вопросы оперирования• Сложности в разработке
7
![Page 8: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/8.jpg)
8
ALLODS ONLINE
![Page 9: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/9.jpg)
ALLODS ONLINE
• Шарды• 200 транзакций в секунду• 1 тред• MySQL
9
![Page 10: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/10.jpg)
SKYFORGE
10
![Page 11: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/11.jpg)
SKYFORGE
• Нет шардов• 100.000+ CCU ( до 10^6 )• 1.000 CCU ~ 30-70 tps.• 100.000 CCU ~ 7.000 tps.• Поменьше рисков
11
![Page 12: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/12.jpg)
МНОГО ДАННЫХ
• 10.000.000 пользователей
• 350.000.000 предметов
• 200+ ГБ
12
![Page 13: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/13.jpg)
МНОГО ПРОГРАММИСТОВ
13
![Page 14: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/14.jpg)
FREE 2 PLAY
Предмет = Время = Деньги Þ Транзакции
14
![Page 15: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/15.jpg)
НАШЕ РЕШЕНИЕ
15
![Page 16: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/16.jpg)
АРХИТЕКТУРА
16
Game Mechanics
DB Interface
DATABASE
DB Service
![Page 17: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/17.jpg)
SERVICE ORIENTED ARCHITECTURE
• Всё есть сервис. БД один из них.
• База спрятана за интерфейсом.
• Группировка функций в «паки».
• Один метод - одна транзакция.
17
![Page 18: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/18.jpg)
ВЫЗОВ МЕТОДА
18
![Page 19: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/19.jpg)
КЭШ И СИНХРОНИЗАЦИЯ
19
DB Service
Database
Operation[]
DB InterfaceSpell “Fireball” выучен
![Page 20: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/20.jpg)
ПРЯМОЕ ПОДКЛЮЧЕНИЕ
JDBC
20
![Page 21: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/21.jpg)
OBJECT TO RELATIONAL MAPPING
Hibernate
getSession().save(dataSet)
21
![Page 22: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/22.jpg)
МАСШТАБИРОВАНИЕ
22
![Page 23: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/23.jpg)
ШАРДИНГ
• Шардировать по аккаунтам• Ключ – ID пользователя
23
INNER IDDB ID
![Page 24: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/24.jpg)
VIRTUAL SHARDS
24
Шард
Шард
Шард
Шард
Шард
Шард
Шард
Шард
Шард
Шард
Шард
Шард
![Page 25: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/25.jpg)
РАСПРЕДЕЛЁННЫЕ ТРАНЗАКЦИИ
Свой велосипед на очередях
• Универсально• Быстро• Много кода = много багов• Eventual consistency
25
![Page 26: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/26.jpg)
РАСПРЕДЕЛЁННЫЕ ТРАНЗАКЦИИ
Native
• Мало кода - мало багов• Не все базы поддерживают• Требует дополнительной прослойки• Тормозят
26
![Page 27: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/27.jpg)
МОДЕЛЬ ДАННЫХ
27
![Page 28: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/28.jpg)
МОДЕЛЬ ДАННЫХ
Свой формат
• Читается только кодом
• Сложно конвертировать
• Перезапись только целиком
28
![Page 29: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/29.jpg)
МОДЕЛЬ ДАННЫХ
Реляционная модель
• SQL
• Constraints
• Недостаточная производительность
29
![Page 30: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/30.jpg)
МОДЕЛЬ ДАННЫХ
NoSQL
• Human readable формат (JSON)
• Поддержка типов на уровне базы
• Перезапись целиком
30
![Page 31: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/31.jpg)
МОДЕЛЬ ДАННЫХ
Гибрид
31
![Page 32: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/32.jpg)
ВЫБОР БД
• Bottleneck – диск
• Транзакции
• MongoDB, MySQL, PostgreSQL
32
![Page 33: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/33.jpg)
ВЫБОР БД
PostgreSQL лучше MySQL.
• Native распределённые транзакции• Синхронная реплика• Кастомные типы данных• Намного меньше багов
33
![Page 34: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/34.jpg)
PERFORMANCE
Почему базы тормозят?
34
![Page 35: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/35.jpg)
НОРМАЛЬНЫЕ ЦИФРЫ
Raid 10
• 1 thread => 400 tps
• 10 threads => 2.500 tps
• Latency 2 - 30 ms
35
![Page 36: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/36.jpg)
BOTTLENECK
36
SSDHDDLock Lock Free
Delete Mark
Working Set < Memory
![Page 37: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/37.jpg)
PERFORMANCE VS RELIABILITY
• Модели поведения fsync()• Синхронная репликация
SSD,Синхронная реплика,Interconnect.Быстро и безопасно.
37
![Page 38: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/38.jpg)
ПЕРЕКРЁСТНАЯ РЕПЛИКАЦИЯ
39
DB1
DB2 Replica
Shard 1
DB2
DB1 Replica
Shard 2
![Page 39: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/39.jpg)
ЭВОЛЮЦИЯ АЛЛОДОВ В SKYFORGE
40
![Page 40: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/40.jpg)
ALLODS ONLINE
• Шардинг• JDBC/ Hibernate.• 1 база на 1 шард. • Общие базы: Биллинг, Аккаунт. • Распределённые транзакции вручную.• Нет единого интерфейса.
41
![Page 41: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/41.jpg)
ALLODS ONLINE
• MySQL, Гибридная схема
• Raid.
• fsync асинхронный c паузой в 1 сек.
• 200 tps.1 тред.
42
![Page 42: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/42.jpg)
ОПЕРИРОВАНИЕ ALLODS ONLINE
• Логи в читаемом виде. Возможен grep.
• Админы знают, легко оперировать.
• Проблемы при обновлении схемы.
• Реплика отваливается.
43
![Page 43: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/43.jpg)
SKYFORGE
44
![Page 44: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/44.jpg)
SKYFORGE
• 100.000 CCU• Hibernate• 15+ баз в реалме. • Native распределённые транзакции.• Единый интерфейс к БД.
45
![Page 45: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/45.jpg)
SKYFORGE
• PostgreSQL• SSD• fsync синхронный • Cинхронная реплика• Virtual shards• 1 тред x 15+ раз
46
![Page 46: КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов](https://reader035.fdocuments.net/reader035/viewer/2022062707/557f1676d8b42a01678b4d57/html5/thumbnails/46.jpg)
СУХОЙ ОСТАТОК
• SOA• Virtual Shards• Hibernate• SSD• PostgreSQL + гибридная модель• Backup
47