|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Здравствуйте! До недавнего времени мой сервер на C# работал с MySQL. Однако со временем я задумался о масштабах игры, а где-то вычитал что MySQL "не лучшим образом справляется с многочисленным чтением\записью в таблицы". Так вот, что же все таки выбрать в моем случае? Собственно, вот такие критерии: 1) Максимальная скорость чтения\записи, в основном данные 1/0 или небольшие строки, не более. Сервер (C#) всего один, а клиентов будет много, ну вы понимаете. 2) Наличие бесплатной версии (например комьюнити мускул), ну или хотя-бы с адекватной ценой (если прирост производительности относительно бесплатных аналогов того стоит) 3) Наличие коннектора C# (только без танцев с бубном, VS-2013) Оболочку для работы с БД я выбрал - Navicat Premium, очень удобная утилита. Однако, поддерживает она только MySQL, PostgreSQL, Oracle, SQLite и MariaDB. Если у вас будут предложения по другим СУБД, подскажите и оболочку т.к. с консолью возиться я не собираюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 12:53 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Для мелкомягкого C# лучше всего подходит мелкомягкий MS SQL. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 13:26 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, О MS SQL оставляют по большей части отрицательные отзывы, к тому же стоит он как два слона. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 13:49 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911О MS SQL оставляют по большей части отрицательные отзывы, к тому же стоит он как два слона. О C# и ADO.NET отзывы ещё хуже, но это же тебя не остановило... А у MS SQL есть бесплатная Express редакция, как ты и просил в стартовом посте. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 14:02 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Ну вообще я выбрал С# по совету одного знакомого, якобы это идеальный вариант для сервера, который общается с клиентом по Websocket's. После чего встал вопрос о хранении всех данных, которых будет не мало. Как мне кажется, лучше C# для этой затеи мне не найти. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 14:11 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Так то мне не принципиально на чем писать сервер и с какой СУБД его связывать. Главное - производительность, ну и чтоб все это дело было более-менее актуально на 2014 год) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 14:15 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Главное - производительность В этом случае хуже, чем C# будут разве что только Java/Javascript и PHP. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 14:24 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Да это понятно, а вот что может быть лучше если делать ставку именно на СУБД? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 14:27 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Так то мне не принципиально на чем писать сервер и с какой СУБД его связывать. Главное - производительность, ну и чтоб все это дело было более-менее актуально на 2014 год) MariaDB (для критичных к скорости таблиц выбирай тип Aria, для критичных к потере выбирай тип XtraDB) + ADO.NET + C# + WebSockets Ещё memcached можешь посмотреть, если к нему можно без плясок конектится из C#. Или MariaDB + HandlerSocket + (MPI + C++) + WebSockets ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 14:37 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася Уткин, А вот HandlerSocket - это уже интересно. Использовать его получится только на С++ с MPI? Просто на шарпе у меня уже есть готовый сервер с Websockets. Если так, то мне нужны хотя-бы образцы этого дела. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 15:05 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Вася Уткин, А вот HandlerSocket - это уже интересно. Использовать его получится только на С++ с MPI? Просто на шарпе у меня уже есть готовый сервер с Websockets. Если так, то мне нужны хотя-бы образцы этого дела. HandlerSockets к MPI не имеет никакого отношения, так что можно и без MPI, про MPI это я так, к слову, что с ним просто можно будет распределенные WEB-сервера делать не только на TCP/UDP, но и на SDP/uDAPL, которые на порядок производительнее в некоторых случаях - это если вы решите хранить промежуточные данные не в MySQL или memcached и прочих, а в собственном приложении, т.е. делать систему на десятки миллионов пользователей. Помимо стандартного подключения к MySQL, реализовали ещё 2 варианта подключения: Memcached-plugin (MySQL в этом случае выглядит как memcached) и HandlerSockets - их точно можно на C/C++. Насчет C# - не знаю, попробуйте нагуглить, если расскажите или попробуете - будет классно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 16:05 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Erlang + Riak :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 16:11 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
skyANA, Это, по моему, слишком сложно :) Вася Уткин, Не хотелось бы связываться с С++ т.к. будут проблемы с управлением памятью, а знаний и опыта у меня не так уж и много. Загуглив "HandlerSockets для C#" я понял, что без бубна тут точно не обойтись т.к. информации просто нет. В общем, пока буду работать с MariaDB. Вот вы писали про таблицу Aria, какие у нее минусы? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 16:28 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Вася Уткин, Не хотелось бы связываться с С++ т.к. будут проблемы с управлением памятью, а знаний и опыта у меня не так уж и много. Проблем с управлением памяти в C++ уже лет 10 нет, в отличие от C. Но лучше используйте С# - то что знаете. AcTiViSioN911Загуглив "HandlerSockets для C#" я понял, что без бубна тут точно не обойтись т.к. информации просто нет. В общем, пока буду работать с MariaDB. Вот вы писали про таблицу Aria, какие у нее минусы? Она утонула :) Aria - нетранзакционный no- ACID дивжок, т.е. нет внешних ключей (нет C), нет отката транзакций из нескольких изменений (нет A), т.е. транзакций нет вообще (нет I) и нет записи в лог транзакций (нет D). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 16:39 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася Уткин, ACID - пока-что я не пользовался ничем из этого, и все работает достаточно неплохо :) Сейчас немножко перенастроил сервер под MariaDB и выполнил несколько операций с таблицей Aria, все работает как надо. В оболочке Navicat есть несколько типов таблиц, но XtraDB там нет, только InnoDB. Это ошибка или как? У встроенной утилиты HeidiSQL от MariaDB так же нет XtraDB. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 16:52 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911, при том подходе, который Вы демонстрируете - возьму то-другое-третье по советам и как-нибудь соединю в продукт одиночки - вряд ли Вы упрётесь в настоящие ограничения хоть какой-нибудь СУБД. Достаточно долго Вы будете стучаться в собственные неудачные решения. Поэтому я бы посоветовал не искать СУБД, а учиться использовать текущее и в архитектуре закладывать шардинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 16:59 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася Уткин, И еще такой вопрос, мой сервер продолжает ссылаться на MySql.Data (который я брал из MySQL Community), так и оставить? Или у MariaDB были какие-либо изменения, о которых с первого взгляда не узнать? Я конечно скачал и установил различные коннекторы от MariaDB, но нигде их не использовал, все и так работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 17:01 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
softwarer, Думаю вы правы, буду продолжать работать с СУБД на базе MySQL, а далее посмотрим. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 17:04 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася Уткин, Еще уточню, как я с этим работаю: Код: c# 1. 2. 3. 4. 5.
Уж не знаю насколько правильно это для MariaDB т.к. образцов C# + MariaDB не нашел. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 17:11 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Вася Уткин, Еще уточню, как я с этим работаю: Код: c# 1. 2. 3. 4. 5.
Уж не знаю насколько правильно это для MariaDB т.к. образцов C# + MariaDB не нашел. Как работали раньше с MySQL, так же и работайте, там максимальная совместимость. https://ru.wikipedia.org/wiki/XtraDB XtraDB полностью обратно совместим с InnoDB (в том числе по формату файлов), и идентифицирует себя в MariaDB как «ENGINE = InnoDB» (точно так же, как и InnoDB), и поэтому может быть использован в качестве замены для стандартного InnoDB. Движок InnoDB в СУБД MariaDB это и есть движок XtraDB :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 17:28 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911 , ну и вы не забываете конечно же использовать параметризованные prepared-запросы? Чтобы каждый раз SQL-запрос не парсился. И если с шардингом пока заморачиваться не хотите, то используйте partitioning , он есть в MariaDB. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 17:33 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася Уткин, Вот пока ничего такого не делал, только обыкновенные запросы к БД (из примеров) и мне этого, почти всегда, хватает. Давайте рассмотрим вот этот кусок кода: Код: c# 1. 2. 3. 4. 5. 6. 7.
Тут происходит проверка на существование логина в БД. Если такого логина нет - данные записываются в БД и создается отдельная таблица для нового юзера. Тут целых 4 обращения к БД, как еще можно это упростить? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 17:50 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Вася Уткин, Вот пока ничего такого не делал, только обыкновенные запросы к БД (из примеров) и мне этого, почти всегда, хватает. Давайте рассмотрим вот этот кусок кода: Код: c# 1. 2. 3. 4. 5. 6. 7.
Тут происходит проверка на существование логина в БД. Если такого логина нет - данные записываются в БД и создается отдельная таблица для нового юзера. Тут целых 4 обращения к БД, как еще можно это упростить? Для начала перепишите этот код с учетом этих рекомендаций: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.prepare(v=vs.110).aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 17:54 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася Уткин, Взял за образец. Команда выполнилась 2 раза, разными способами. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
И что мне это дало? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 18:04 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Давайте рассмотрим вот этот кусок кода *FACEPALM* С таким кодом Вам в общем-то, как и сказал Softwarer , всё равно на каком языке писать и какой СУБД пользоваться. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 18:11 |
|
|
start [/forum/topic.php?fid=35&msg=38816132&tid=1552351]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 155ms |
0 / 0 |