Какую базу данных использовать? - PullRequest
3 голосов
/ 12 сентября 2010

Я новичок в базах данных, но, думаю, у меня наконец возникла ситуация, когда плоские файлы не будут работать.

Я пишу программу для анализа результатов многопользовательских игр, где каждая игра можетиметь любое количество игроков, сгруппированных в любое количество команд.Я хочу, чтобы игроки могли выигрывать, связывать или выходить из игры на полпути (и выигрывать / проигрывать в зависимости от эффективности команды).

Мне также может потребоваться сохранить исторические рейтинги игроков (если только это не просто быстрее пересчитать их из истории игр), поэтому я не знаю, означает ли это сохранение рейтинга каждого игрока рядом с каждой сыгранной игрой или наличиеотдельный стол для каждого игрока, или что.

Ответы [ 5 ]

7 голосов
/ 12 сентября 2010

Я не вижу критериев, которые влияют на выбор базы данных, но я перечислю бесплатные:

Я не рекомендую встроенную базу данных, такую ​​как SQLite, потому что встроенные базы данных делают компромисс в функциях, чтобы приспособиться к размеру и размеру. Я не согласен с их мнением о том, что типизация данных должна быть упрощена - это приводит к многочисленным вопросам о СО, которые, помимо прочего, должны были бы иметь дело с фильтрацией даты / времени ...

Вы захотите узнать о нормализации, получая данные в третьей нормальной форме (3NF), поскольку она обеспечивает ссылочную целостность, что также минимизирует избыточность данных. Например, ваша статистика игрока не будет храниться в базе данных - она ​​будет рассчитываться во время запроса на основе данных, полученных вручную.

3 голосов
/ 12 сентября 2010

Некоторые хорошие варианты уже упоминались, но я действительно считаю, что на платформе Java H2 - очень хороший выбор.Он идеально подходит для тестирования (тестовая база данных в памяти), но очень хорошо работает и для встроенных сценариев использования, а также в качестве автономной «реальной базы данных».Кроме того, его легко экспортировать как файл дампа, импортировать из него, перемещать.И работает эффективно тоже.Он разработан очень хорошим парнем из Java DB, и это не первая его попытка, и это видно по зрелости проекта.Кроме того, он все еще активно развивается и поддерживается.

3 голосов
/ 12 сентября 2010

Вы не упомянули необходимость в механизмах блокировки, когда несколько пользователей могут конкурировать для одновременной записи одних и тех же данных в один и тот же ресурс (запись базы данных или файл в случае плоских файлов). Я бы посоветовал получить хорошую книгу по проектированию баз данных и попытаться глубже понять правила нормализации. Распределение данных по отдельным таблицам влияет на производительность, но также влияет на простоту использования построения запросов. Это очень интересная тема, и на нее нет простого ответа. Вот почему компании нанимают администраторов баз данных для оптимизации их структур данных.

Возможно, вы захотите взглянуть на SQLite , если вам нужен облегченный движок базы данных.

1 голос
/ 12 сентября 2010

Слово о том, почему никто даже не упоминает ни одну из баз данных "NoSQL", когда вы использовали ее в качестве тега:

В последнее время базы данных, отличные от SQL, привлекают большое внимание (или даже откровенная ажиотаж)из-за некоторых громких сценариев использования, потому что они новые (и, следовательно, интересные), и потому что они обещают невероятную масштабируемость (что «сексуально» для программистов).Однако только очень немногие очень крупные игроки действительно нуждаются в такой масштабируемости - и вы, конечно, не нуждаетесь.

Еще один фактор заключается в том, что базы данных SQL требуют от вас определения схемы БД (структуры таблиц и столбцов).заранее, и изменить это несколько проблематично (особенно если у вас уже есть очень большая база данных).Базы данных, отличные от SQL, являются более гибкими в этом отношении, но вы платите за них более сложным кодом (например, после того, как вы вводите новое поле, ваш код должен иметь возможность обрабатывать элементы, которые еще не представлены).Не похоже, что вам нужна такая гибкость.

0 голосов
/ 12 сентября 2010

Попробуйте также OrientDB .Это бесплатно (лицензия Apache 2), работает везде, поддерживает SQL, и это действительно быстро.Может вставить 1 000 000 записей за 6 секунд на обычном hw.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...