|
СУБД для браузерной 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 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Ну так это самая простая операция, происходящая всего 1 раз для каждого клиента. Меня сейчас интересует лишь одно - как правильно написать сервер, чтобы не было ничего "кривого" или лишнего. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 18:15 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Вася Уткин, Взял за образец. Команда выполнилась 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.
И что мне это дало? Еслиб было написано чуть правильней - это дало ускорение раз в 10 для подобных простых запросов к noACID движку Aria. 1. Весь тот код, что до .Prepare(); делайте один раз в конструкторе - это выполняется долго. 2. А следующие строчки выполняются быстро: command.Parameters[0].Value = 21; command.Parameters[1].Value = "Second Region"; command.ExecuteNonQuery(); делайте их каждый раз, когда надо обратиться к базе - фактически это no-SQL обращение к базе. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 18:19 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Меня сейчас интересует лишь одно - как правильно написать сервер, чтобы не было ничего "кривого" или лишнего. Это примерно двухсеместровый курс лекций. Вряд ли кто-то здесь будет Вам его читать. Пишите как умеете, придёт опыт - переделаете. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 18:20 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася Уткин, Что-то до меня не дошло, что именно нужно сделать О_о Вот то, что мне нужно постоянно изменять: Код: c# 1.
Тогда в основном коде будет написано так: Код: c# 1.
А что должно быть в самом SqlCommandPrepareEx? Ведь я уже заранее пишу какими должны быть логин и пароль, зачем тогда параметры? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 18:47 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Таких Код: c# 1.
или таких Код: c# 1.
строчек в коде не должно быть нигде и никогда, не при каких условиях. А остальное решайте сами. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 18:55 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася Уткин, Работает и так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 18:55 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася Уткин, Хм, ну хорошо. Попробую обойтись без этого, раз вы так говорите. Сам то я разницы не вижу) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 18:57 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Собственно, вот такие критерии: 1) Максимальная скорость чтения\записи, ... AcTiViSioN911Работает и так: Ну понятно... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 18:57 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
А, ну, да... Пришла пора курсовых... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 20:47 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
pkarklin, Ну так, пришло время учить матчасть) Потихоньку вникаю что-зачем. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 20:55 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Ну так, пришло время учить матчасть) Потихоньку вникаю что-зачем. Для изучения матчасти, как правило, используется документация по продукту. В случае возникновения неописанных в документации проблем по продукту, действительно, можно обратиться, но в соответствующий продукту форум. И, по теме, как правило, критерии 1 и 2 не совместимы. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 21:06 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
pkarklin, Так все мы стремимся к идеалу, пусть даже это и невозможно. Я получил достаточно информации чтобы продолжить работу. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 21:13 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Я получил достаточно информации чтобы продолжить работу. IMHO, Вам нужен наставник. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 21:17 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
pkarklin, Не ИМХО а нужен)) Не повезло в жизни, учусь всему сам... Вот так годится? Я старался учесть все требования... Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 21:38 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Ой забыл, в конце: Код: c# 1.
Выдает 110 мс, это нормальный результат? Или слишком медленно? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 21:39 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Вот так годится? Я уже говорил про соответствующий раздел форума. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 21:44 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911это нормальный результат? Или слишком медленно? Это Вам решать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 21:44 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
pkarklin, Эм, мне создавать отдельную тему ради одного вопроса? Этот топик уже исчерпал себя, и не думаю что на этом форуме "набивание постов" как-то наказывается. К тому же, ТС тут я. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 21:46 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Эм, мне создавать отдельную тему ради одного вопроса? Вы догадливый! В третий раз повторяю "в соответствующем разделе форума". AcTiViSioN911Этот топик уже исчерпал себя, и не думаю что на этом форуме "набивание постов" как-то наказывается. Обратитесь к модератору с просьбой о его закрытии. А то действительно, понимаешь ли, ходят, тут, кому не попадя, посты набивают. AcTiViSioN911К тому же, ТС тут я. Мои соболезнования. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 21:48 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911pkarklin, Не ИМХО а нужен)) Не повезло в жизни, учусь всему сам... Вот так годится? Я старался учесть все требования... Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Я всё думал, почему многие считают SQL-СУБД медленными (я различаю SQL/noSQL и ACID/noACID). Ведь по сути единожды подготавливаются все запросы и парсятся. А затем при каждом обращении к базе отсылаются только параметры. Что в memcached получить key-value, что в Aria(noACID) с prepared-SQL(noSQL) получить ответ на запрос к одной таблице с проиндексированными key-value, через стандартное MySQL подключение. А сейчас понимаю, для многих prepared-запросы - это выше их понимания :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 23:50 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася Уткин, Вы предлагаете мне открыть соединения для 1000+ таблиц, а потом не закрывая их писать, читать и т.д.? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 00:34 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася Уткин, Или можно менять и другие значения, например: "INSERT INTO users (Login,Password) VALUES (?0,?1)" сделать так: "INSERT INTO ?0 (?1, .... ) VALUES (?10, .... )" Так можно? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 00:37 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася Уткин, Таких примеров я конечно не видел, но мало ли... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 00:39 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911, SQLite вам будет достаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 01:03 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Вы предлагаете мне открыть соединения для 1000+ таблиц, а потом не закрывая их писать, читать и т.д.?Вам предлагают спроектировать ваши SQL-запросы и подготавливать параметризованные на нужных соединениях в нужных количествах. P.S. И, да - урежьте осетра про тысячи таблиц: если вы постоянно работаете вблизи верхних пределов, то, вероятно, в этом есть что-то неправильное. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 04:10 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Взял за образец. Команда выполнилась 2 раза, разными способами. <...> И что мне это дало?Почитайте про SQL injection : раз , два ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 09:05 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, А как быть с тысячью клиентов? У каждого должна быть своя таблица, а клиентов будет не одна тысяча, имею ввиду именно онлайн. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 13:20 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911У каждого должна быть своя таблица Кому должна?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 13:36 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Ладно, может я не знаю всех особенностей СУБД. У каждого клиента будет от 200 и более параметров (начиная от логина/пароля и т.д.). Можно ли сделать все это в одной таблице, не потеряв в скорости чтения/записи? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 13:48 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Так же добавлю, что на сервере по таймеру (каждую минуту) для игроков в онлайне будут обновляться некоторые данные, в этой же таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 13:58 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Ладно, может я не знаю всех особенностей СУБД. Ладно AcTiViSioN911У каждого клиента будет от 200 и более параметров (начиная от логина/пароля и т.д.). Можно ли сделать все это в одной таблице, не потеряв в скорости чтения/записи? Чего не нужно делать точно, так это создавать по таблице на клиента. А вот будет ли таблица для параметров именно одна - это другой вопрос. М.б. их 2 будет, а м.б. 19. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 14:05 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Так же добавлю, что на сервере по таймеру (каждую минуту) для игроков в онлайне будут обновляться некоторые данные, в этой же таблице. Звучит как не очень хорошая идея. Не лучше ли менять данные по мере из фактического изменения? Игрок А стоит и афкает в тюрьме 329485 минут. Игрок Б только что приобрёл Сияющее Копьё Разгневанного Школьника. Неужели для них одинаково количество поводов писать что-либо в базу? IMHO, вам, AcTiViSioN911, весь этот разговор нужно отложить и заняться изучением проектирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 14:13 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Зайцев Фёдор, Так вот я сейчас и нахожусь на этой стадии. Мне необходимо знать максимальные размеры у таблиц, чтобы грамотно распределить данные. Таблицы для каждого пользователя - это я конечно загнул, меня просто интересует вопрос производительности. Какой предел параметров (столбцов) установить на каждую таблицу (100, 200 ... ), если брать в расчет запись и чтение каждую минуту для 1000 игроков. Хотелось бы грамотно их распределить. По поводу записей в таблицы. Пусть у игрока сейчас 1000 ед. какого-либо ресурса, а через 15 минут он захочет потратить 500 ед. Получается, что через 15 минут к его кредитам на счету добавятся еще 150 (по 10 в минуту), после чего будет списана сама стоимость покупки, за которой последует запись в таблицу (650). Как я думаю, это неплохая схема. Все остальные вычисления (как прибавляется по 10 ед. в минуту) будут происходить у клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 15:10 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Зайцев Фёдор, Так же добавлю, что при каждой авторизации игрока, это числа (например ресурсы) будут перезаписаны сервером, в одной они таблице или в нескольких. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 15:13 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Так же добавлю, что ... Текущее обсуждение несколько вышло за рамки раздела и топика. Могу добавить только, что на данном этапе разработки можно использовать любую СУБД. Момент, при котором вы столкнётесь с проблемами масштабирования и производительности не наступит в обозримом будущем - намного раньше придётся бороться с ошибками проектирования. Мне так кажется. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 15:29 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Как я думаю, это неплохая схема. Первое же отключение электричества заставит в этом усомниться. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 15:30 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911при каждой авторизации игрока, это числа (например ресурсы) будут перезаписаны сервером При такой архитектуре СУБД не только не нужна, но и вообще противопоказана. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 15:38 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
ИМХО элементарный анализ данных не проведён, а уже какой-то код написан, какая-то архитектура придумана. 1. Новый пользователь, какие у него в начале данные, какого объёма, как быстро они изменяются? 2. Пользователь плотно играет в игрушку год, какие у него в итоге данные, какого объёма? 3. Пользователь играет в течение года, но редко, какие у него в итоге данные, какого объёма? Ну и по каждому пользователю проанализировать частоту обращений и характер обращений к серверу. Как это зависит от геймплея? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 15:59 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
SergSuper, Да, я знаю как распределить данные чтобы получить более-менее адекватную БД, а все остальное придет с опытом. softwarer, В каком смысле? Данные из БД сотрутся? Быть может я недостаточно точно выразился. Число 1000 (как любой другой ресурс игрока) было записано 26.11.2014 в 12:00. И не важно когда произойдет их изменение (через 15 минут или 2 недели) - накапавшие за пройденное время ресурсы (скажем, 10 ед. в минуту) так или иначе добавятся к общему числу, когда это будет необходимо (авторизация клиента или совершение покупки). Dimitry Sibiryakov, Тогда где же мне хранить данные клиентов? Всего-то нужно иметь возможность быстро считывать и записывать строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 16:02 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
skyANAИМХО элементарный анализ данных не проведён, а уже какой-то код написан, какая-то архитектура придумана. 1. Новый пользователь, какие у него в начале данные, какого объёма, как быстро они изменяются? 2. Пользователь плотно играет в игрушку год, какие у него в итоге данные, какого объёма? 3. Пользователь играет в течение года, но редко, какие у него в итоге данные, какого объёма? Ну и по каждому пользователю проанализировать частоту обращений и характер обращений к серверу. Как это зависит от геймплея? Новый пользователь будет иметь все те-же таблицы что и плотно играющий 10 лет игрок. Разве что заполнены строки будут не числами а нулями/пустотой (как там позволяет БД). Игровые возможности уже практически расписаны, вскоре можно будет создавать, собственно, таблицы. Сейчас у меня готово то - регистрация\авторизация и некоторые стандартные таблицы. Если исходить из расчета, что у каждого игрока не будет своей таблицы, то тут даже проще - не было у человека автомобиля - и строки в таблице "Автомобили" нет. А как появился - так сразу новая запись. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 16:10 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Тогда где же мне хранить данные клиентов? Всего-то нужно иметь возможность быстро считывать и записывать строки. В файле. А файл - в файловой системе. Ты эта... определись: записывать строки или полное состояние персонажа по таймеру. Впрочем, от этого всего лишь зависит с какими флагами открывать этот файл... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 17:54 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
[AcTiViSioN911]Здравствуйте! До недавнего времени мой сервер на C# работал с MySQL. Однако со временем я задумался о масштабах игры, а где-то вычитал что MySQL "не лучшим образом справляется с многочисленным чтением\записью в таблицы". Так вот, что же все таки выбрать в моем случае? для хранения говноданных любая говносубд подойдет, даже MySQL. тем более что без MyISAM таблиц, на одном только Inno он не так уж и плох. Собственно, вот такие критерии: твои критерии наверняка не прокатят. я хрен знает как долго этим занимаюсь, и то критерии бы не смог сформулировать. 1) Максимальная скорость чтения\записи, в основном данные 1/0 или небольшие строки, не более. 2) Наличие бесплатной версии (например комьюнити мускул), ну или хотя-бы с адекватной ценой 3) Наличие коннектора C# (только без танцев с бубном, VS-2013) ну, один из критериев оказался таки все же приемлимым - чтобы бесплатно. тут сразу спектр резко сокращается. MySQL, fire bird, postgres. рекомендую остаться на мускле, заменив все на innodb. проблемы производительности решать про мере их появления, а не надумывать их. Оболочку для работы с БД я выбрал - Navicat Premium, очень удобная утилита. Однако, поддерживает она только MySQL, PostgreSQL, Oracle, SQLite и MariaDB. Если у вас будут предложения по другим СУБД, подскажите и оболочку т.к. с консолью возиться я не собираюсь.[/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 19:08 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Если у вас будут предложения по другим СУБД, подскажите и оболочку т.к. с консолью возиться я не собираюсь.[/quot] а, это тогда тебе увольняться надо по проф непригодности. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 19:09 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Dimitry Sibiryakov, О MS SQL оставляют по большей части отрицательные отзывы, к тому же стоит он как два слона. не читай надписи на заборах . инет длинный, а идиотов много. sqlserver замечательная СУБД и бесплатная версия у них есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 19:17 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася Уткин, C в Acid это не внешние ключи ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 19:21 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
MasterZivВася Уткин, C в Acid это не внешние ключи А что это? Посмотрим, сумеете ли вы объяснить это автору топика короче и понятней, чем я :) C в Acid - согласованность - включает в себя в том числе и внешние ключи (остальная часть (C)согласованности сильно пересекается с A и I, т.к. достигается за их счет и за счет корректности SQL-statement-ов в транзакции, написанных разработчиком). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 19:51 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
MasterZiv, Все же рекомендуете innodb вместо Aria (noACID)? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2014, 19:51 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Dimitry Sibiryakov, Ладно, может я не знаю всех особенностей СУБД. У каждого клиента будет от 200 и более параметров (начиная от логина/пароля и т.д.). Можно ли сделать все это в одной таблице, не потеряв в скорости чтения/записи? Не можно, а НУЖНО ! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2014, 19:05 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911MasterZiv, Все же рекомендуете innodb вместо Aria (noACID)? нет, не ACID я не буду рекомендовать никому. InnoDB или Maria. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2014, 19:07 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
MasterZivAcTiViSioN911MasterZiv, Все же рекомендуете innodb вместо Aria (noACID)? нет, не ACID я не буду рекомендовать никому. InnoDB или Maria . Maria - такого нет вообще, есть Aria и MariaDB, вы что имели ввиду? Если имели ввиду "InnoDB или Aria" - то вы только что предложили не ACID движок :) Если имели ввиду "InnoDB или MariaDB" - то вы дали на выбор: "отдельный движок или целую СУБД". ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2014, 19:28 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Вася УткинMasterZivпропущено... нет, не ACID я не буду рекомендовать никому. InnoDB или Maria . Maria - такого нет вообще, есть Aria и MariaDB, вы что имели ввиду? MariaDB ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2014, 19:42 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911MasterZiv, Все же рекомендуете innodb вместо Aria (noACID)? Все же рекомендую в универ поступить или хотя бы пару книг по проектированию БД и программированию на C# осилить. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2014, 11:23 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
В общем, вот что получилось: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
На выходе, если это INSERT, получаем id вставленной записи. Если же это SELECT, выводится Argument[0]=кол-во строк, Argument[1]=кол-во столбцов, Argument[*]=данные из таблицы. Все работает достаточно быстро. Может кому пригодится. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2014, 19:29 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Ох, забыл кое-что изменить. Это: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Заменить на это: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2014, 20:21 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911 Новый пользователь будет иметь все те-же таблицы что и плотно играющий 10 лет игрок. Разве что заполнены строки будут не числами а нулями/пустотой (как там позволяет БД). Игровые возможности уже практически расписаны, вскоре можно будет создавать, собственно, таблицы. Сейчас у меня готово то - регистрация\авторизация и некоторые стандартные таблицы. Если исходить из расчета, что у каждого игрока не будет своей таблицы, то тут даже проще - не было у человека автомобиля - и строки в таблице "Автомобили" нет. А как появился - так сразу новая запись. ты там писал, что что то понимаешь. так вот, это вряд ли. тебе надо в школу за парту, и учиться, учиться, учиться, как говорил великий Ленин... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2014, 08:32 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
Если бы мне нужна была высокая масштабируемость и я бы не хотел тратить на СУБД деньги, то я бы выбрал либо PostgreSQL, либо MongoDB. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2014, 12:08 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
JeStoneЕсли бы мне нужна была высокая масштабируемость и я бы не хотел тратить на СУБД деньги, то я бы выбрал либо PostgreSQL, либо MongoDB.А почему не Riak? uGameDB uGameDB OverviewuGameDB is a complete database solution for the Unity game engine especially tailored for networked games. It consists of the uGameDB client which is tightly integrated with Unity for unmatched ease of use, and the Riak back-end database which adds an entirely new level of scalability. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2014, 12:23 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
skyANAА почему не Riak? Наверное дело в том, что с упомянутыми СУБД у меня есть опыт работы, а с Riak нет =) Но если вы напишите его преимущества по сравнению с MongoDB, я буду признателен ) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2014, 12:27 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
JeStone, uGameDB не умеет работать с Mongo :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2014, 12:41 |
|
СУБД для браузерной MMOG (C#)
|
|||
---|---|---|---|
#18+
AcTiViSioN911Dimitry Sibiryakov, О MS SQL оставляют по большей части отрицательные отзывы, к тому же стоит он как два слона. Я работаю в интернет магазине, входящем в ТОP-10 в России, и у нас только MS SQL. Так что могу дать положительный отзыв. При правильном программировании справляется с огромными нагрузками. Для MMO будет полезен Service Broker ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2014, 21:36 |
|
|
start [/forum/topic.php?all=1&fid=35&tid=1552351]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
93ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 202ms |
0 / 0 |