Спасибо, я о нём тупо не знал до этого момента. :)
Посмотрел, вроде примерно то что надо. Впринципе можно было бы и его заиспользовать. Разница с JSON-ом на самом деле минимальна. JSON начиная с версии 9.3 такой же встроеный тип как и hstore, с поддержкой на уровне базы.
Но с кастомными типами есть один неприятный момент. Их сложно сращивать одновременно с hibernate-ом и постгресным jdbc драйвером. Когда я это пробовал, мне пришлось немного подхачить драйвер, чтобы в коде у меня всё это выглядело красиво, что уже не есть гуд.
Чёрт его знает, сколько они в среднем живут. Статистики я не видел. По личным печатлениям — у нас в офисе ломаются и те и те. Вообще SSD очень молодая технология и каждый следующий диск надёжнее чем предыдущий. Именно поэтому мы откладываем покупку дисков до самого последнего момента :)
На Аллодах был специальный механизм для этого, но в Skyforge мы от этого отказались. Много багов, мало толку. Разные карты у нас не граничат, хождение между ними только через телепорты.
Никак. Игроки размазаны по картам. Карты находятся на разных машинах. Одна машина должна тянуть ровно столько людей, сколько будет на одной карте. И этим числом мы управляем :)
Так что таких батлов как еве у нас быть не может.
До рестарта данные в одной базе уже правильные, а во второй они заблокированы. В общем да, в некотором смысле не консистенты. Но это не беда, мы сервера всё равно скорее всего остановим, если у нас всё упало :)
Я тоже так думал, до тех пор пока Пётр Зайцев, на конференции, наглядно не посчитал, что при записи 100МБ/сек одного SSD хватит на 3 года. У нас трафик поменьше, так что волноваться не стоит. Диск умрёт раньше из-за каких-нибудь других причин :)
1. У нас всё просто. Обновление на ходу мы не можем делать по 101 причине, поэтому устраивается «профилактика» в ходе которой все сервера гасятся и на них накатывается обновлённый код, ресурсы и т.п. При старте сервер автоматически конвертирует базу, добавляет туда индексы, переформатирует таблички и т.п. Скрипты конвертации зашиты в сервер и пишутся руками.
2. Логи бывают двух видов.
Просто логи сервера мы храним в файликах, но пытаемся прикрутить фейсбучный Scribe.
Логи покупок и прочих игровых действий мы храним в специальной большой базе/системе для гейм мастеров. Но про неё много очень писать надо, потом, может быть статья будет. Stay tuned :) Основная её идея в том, что она заточена под террабайты данных. Её делают специальные люди, и да, она совсем не простая :)
«Маленькие базы» делятся на типы, и их у нас около 12. Внутри одного типа структура одинаковая, и данные размазаны между базами. Связь между ними осуществляется посредством распределённых транзакций или не осуществляется вовсе, если это не нужно :)
Если произошел обмен предметом между двумя игроками, мы логируем это в специальную систему для гейм мастеров, но про неё я пока ничего скажу, это предмет отдельной и большой статьи.
Посмотрел, вроде примерно то что надо. Впринципе можно было бы и его заиспользовать. Разница с JSON-ом на самом деле минимальна. JSON начиная с версии 9.3 такой же встроеный тип как и hstore, с поддержкой на уровне базы.
Но с кастомными типами есть один неприятный момент. Их сложно сращивать одновременно с hibernate-ом и постгресным jdbc драйвером. Когда я это пробовал, мне пришлось немного подхачить драйвер, чтобы в коде у меня всё это выглядело красиво, что уже не есть гуд.
Так что таких батлов как еве у нас быть не может.
Более подробно я пока не расскажу, это потянет на полноценную статью :) Возможно она даже будет через некоторое время.
2. Логи бывают двух видов.
Просто логи сервера мы храним в файликах, но пытаемся прикрутить фейсбучный Scribe.
Логи покупок и прочих игровых действий мы храним в специальной большой базе/системе для гейм мастеров. Но про неё много очень писать надо, потом, может быть статья будет. Stay tuned :) Основная её идея в том, что она заточена под террабайты данных. Её делают специальные люди, и да, она совсем не простая :)
Концепт: en.wikipedia.org/wiki/Distributed_transaction
Приложение концепта к postgresql: www.postgresql.org/docs/9.2/static/sql-commit-prepared.html
Библиотечка, которая помогает нам дёргать всё это из Java: docs.codehaus.org/display/BTM/Home
Если произошел обмен предметом между двумя игроками, мы логируем это в специальную систему для гейм мастеров, но про неё я пока ничего скажу, это предмет отдельной и большой статьи.