powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / СУБД для браузерной MMOG (C#)
12 сообщений из 87, страница 4 из 4
СУБД для браузерной MMOG (C#)
    #38818766
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivAcTiViSioN911MasterZiv,

Все же рекомендуете innodb вместо Aria (noACID)?

нет, не ACID я не буду рекомендовать никому. InnoDB или Maria .
Maria - такого нет вообще, есть Aria и MariaDB, вы что имели ввиду?
Если имели ввиду "InnoDB или Aria" - то вы только что предложили не ACID движок :)
Если имели ввиду "InnoDB или MariaDB" - то вы дали на выбор: "отдельный движок или целую СУБД".
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38818780
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася УткинMasterZivпропущено...


нет, не ACID я не буду рекомендовать никому. InnoDB или Maria .
Maria - такого нет вообще, есть Aria и MariaDB, вы что имели ввиду?

MariaDB
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38819221
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AcTiViSioN911MasterZiv,

Все же рекомендуете innodb вместо Aria (noACID)?
Все же рекомендую в универ поступить или хотя бы пару книг по проектированию БД и программированию на C# осилить.
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38820353
AcTiViSioN911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, вот что получилось:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
MySqlCommand MySql_Users = new MySqlCommand(null, new MySqlConnection("server=localhost;user id=root;database=users;password=911911"));

        public void Start()
        {
            // Открываем соединение с БД USERS
            MySql_Users.Connection.Open();
            // Получаем id вставленной записи
            Console.WriteLine(MySqlSend("INSERT INTO users (login,password,nick) VALUES (?0,?1,?2)", "login;password;nick", MySql_Users)[0]);
            // Закрываем
            MySql_Users.Connection.Close();
        }

Код: 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.
        public ArrayList MySqlSend(string Command, string ParametersText, MySqlCommand DataBase)
        {
            ArrayList Argument = new ArrayList();
            try
            {
                DataBase.CommandText = Command;
                ArrayList Parameters = new ArrayList();
                foreach (string s in ParametersText.Split(new Char[] { ';' })) Parameters.Add(s);
                string SQL = Command.Remove(Command.IndexOf(" "));
                switch(SQL)
                {
                    case "INSERT":
                        DataBase.CommandText += ";SELECT last_insert_id()";
                        break;
                }
                for (int CurValue = 0; CurValue < Parameters.Count; CurValue++) DataBase.Parameters.AddWithValue("?" + CurValue, Parameters[CurValue]);
                DataBase.ExecuteNonQuery();
                switch (SQL)
                {
                    case "INSERT":
                        Argument.Add(DataBase.ExecuteScalar()); 
                        break;
                    case "SELECT":
                        MySqlDataReader DataReader = DataBase.ExecuteReader();
                        int Rows = 0; Argument.Add(0); Argument.Add(DataReader.FieldCount);
                        if (DataReader.HasRows) while (DataReader.Read()) { Rows++; for (int i = 0; i < DataReader.FieldCount; i++) Argument.Add(DataReader.GetString(i)); }
                        DataReader.Close(); Argument[0] = Rows;
                        break;
                }
                DataBase.Parameters.Clear();
                return Argument; // "0" = пусто
            }
            catch (Exception Error)
            {
                Console.WriteLine("Ошибка! " + Command + " /// " + Error);
                DataBase.Parameters.Clear();
                Argument.Add("-1");
                return Argument; // "-1" = ошибка
            }
        }


На выходе, если это INSERT, получаем id вставленной записи. Если же это SELECT, выводится Argument[0]=кол-во строк, Argument[1]=кол-во столбцов, Argument[*]=данные из таблицы. Все работает достаточно быстро. Может кому пригодится.
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38820373
AcTiViSioN911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ох, забыл кое-что изменить.

Это:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
                for (int CurValue = 0; CurValue < Parameters.Count; CurValue++) DataBase.Parameters.AddWithValue("?" + CurValue, Parameters[CurValue]);
                DataBase.ExecuteNonQuery();
                switch (SQL)
                {
                    case "INSERT":
                        Argument.Add(DataBase.ExecuteScalar()); 
                        break;
                    case "SELECT":
                        MySqlDataReader DataReader = DataBase.ExecuteReader();
                        int Rows = 0; Argument.Add(0); Argument.Add(DataReader.FieldCount);
                        if (DataReader.HasRows) while (DataReader.Read()) { Rows++; for (int i = 0; i < DataReader.FieldCount; i++) Argument.Add(DataReader.GetString(i)); }
                        DataReader.Close(); Argument[0] = Rows;
                        break;

Заменить на это:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
                for (int CurValue = 0; CurValue < Parameters.Count; CurValue++) DataBase.Parameters.AddWithValue("?" + CurValue, Parameters[CurValue]);
                switch (SQL)
                {
                    case "INSERT":
                        Argument.Add(DataBase.ExecuteScalar()); 
                        break;
                    case "SELECT":
                        DataBase.ExecuteNonQuery();
                        MySqlDataReader DataReader = DataBase.ExecuteReader();
                        int Rows = 0; Argument.Add(0); Argument.Add(DataReader.FieldCount);
                        if (DataReader.HasRows) while (DataReader.Read()) { Rows++; for (int i = 0; i < DataReader.FieldCount; i++) Argument.Add(DataReader.GetString(i)); }
                        DataReader.Close(); Argument[0] = Rows;
                        break;
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38820533
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AcTiViSioN911
Новый пользователь будет иметь все те-же таблицы что и плотно играющий 10 лет игрок. Разве что заполнены строки будут не числами а нулями/пустотой (как там позволяет БД). Игровые возможности уже практически расписаны, вскоре можно будет создавать, собственно, таблицы. Сейчас у меня готово то - регистрация\авторизация и некоторые стандартные таблицы.
Если исходить из расчета, что у каждого игрока не будет своей таблицы, то тут даже проще - не было у человека автомобиля - и строки в таблице "Автомобили" нет. А как появился - так сразу новая запись.

ты там писал, что что то понимаешь.
так вот, это вряд ли.

тебе надо в школу за парту, и учиться, учиться, учиться, как говорил великий Ленин...
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38820606
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если бы мне нужна была высокая масштабируемость и я бы не хотел тратить на СУБД деньги, то я бы выбрал либо PostgreSQL, либо MongoDB.
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38820610
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38820613
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА почему не Riak?

Наверное дело в том, что с упомянутыми СУБД у меня есть опыт работы, а с Riak нет =) Но если вы напишите его преимущества по сравнению с MongoDB, я буду признателен )
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38820623
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JeStone,

uGameDB не умеет работать с Mongo :)
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38820625
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38836468
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AcTiViSioN911Dimitry Sibiryakov,

О MS SQL оставляют по большей части отрицательные отзывы, к тому же стоит он как два слона.

Я работаю в интернет магазине, входящем в ТОP-10 в России, и у нас только MS SQL. Так что могу дать положительный отзыв. При правильном программировании справляется с огромными нагрузками.

Для MMO будет полезен Service Broker
...
Рейтинг: 0 / 0
12 сообщений из 87, страница 4 из 4
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / СУБД для браузерной MMOG (C#)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]