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

Ну так это самая простая операция, происходящая всего 1 раз для каждого клиента. Меня сейчас интересует лишь одно - как правильно написать сервер, чтобы не было ничего "кривого" или лишнего.
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816531
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
        private static void SqlCommandPrepareEx()
        {
            using (MySqlConnection connection = new MySqlConnection("server=localhost;user id=root;database=users;password=911911"))
            {
                connection.Open();
                MySqlCommand command = new MySqlCommand(null, connection);
                command.CommandText = "INSERT INTO users (Login, Password) VALUES (@id, @desc)";
                MySqlParameter idParam = new MySqlParameter("@id", MySqlDbType.Int16, 0);
                MySqlParameter descParam = new MySqlParameter("@desc", MySqlDbType.Text, 100);

                // Первый способ
                idParam.Value = 20;
                descParam.Value = "First Region";
                command.Parameters.Add(idParam);
                command.Parameters.Add(descParam);
                command.Prepare();
                command.ExecuteNonQuery();

                // Второй способ
                command.Parameters[0].Value = 21;
                command.Parameters[1].Value = "Second Region";
                command.ExecuteNonQuery();
            }
        }


И что мне это дало?
Еслиб было написано чуть правильней - это дало ускорение раз в 10 для подобных простых запросов к noACID движку Aria.

1. Весь тот код, что до .Prepare(); делайте один раз в конструкторе - это выполняется долго.
2. А следующие строчки выполняются быстро:
command.Parameters[0].Value = 21;
command.Parameters[1].Value = "Second Region";
command.ExecuteNonQuery();
делайте их каждый раз, когда надо обратиться к базе - фактически это no-SQL обращение к базе.
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816532
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AcTiViSioN911Меня сейчас интересует лишь одно - как правильно написать сервер,
чтобы не было ничего "кривого" или лишнего.
Это примерно двухсеместровый курс лекций. Вряд ли кто-то здесь будет Вам его читать.
Пишите как умеете, придёт опыт - переделаете.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816565
AcTiViSioN911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вася Уткин,

Что-то до меня не дошло, что именно нужно сделать О_о
Вот то, что мне нужно постоянно изменять:
Код: c#
1.
command.CommandText = "INSERT INTO users (Login, Password) VALUES (@id, @desc)";



Тогда в основном коде будет написано так:
Код: c#
1.
SqlCommandPrepareEx("INSERT INTO users (Login, Password) VALUES ('login','password')"); // записать логин\пароль



А что должно быть в самом SqlCommandPrepareEx? Ведь я уже заранее пишу какими должны быть логин и пароль, зачем тогда параметры?
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816568
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таких
Код: c#
1.
                string[] MassID = MySqlCommand("get", "SELECT id FROM users WHERE login = '" + Login + "'", "users", ""); // Получить последний записанный номер (ID в таблице)


или таких
Код: c#
1.
SqlCommandPrepareEx("INSERT INTO users (Login, Password) VALUES ('login','password')"); // записать логин\пароль


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

Работает и так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SqlCommandPrepareEx("INSERT INTO users (Login, Password) VALUES ('1', '2')");

...

        private static void SqlCommandPrepareEx(string SQL)
        {
            using (MySqlConnection connection = new MySqlConnection("server=localhost;user id=root;database=users;password=911911"))
            {
                connection.Open();
                MySqlCommand command = new MySqlCommand(null, connection);
                command.CommandText = SQL;
                command.ExecuteNonQuery();
            }
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816572
AcTiViSioN911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вася Уткин,

Хм, ну хорошо. Попробую обойтись без этого, раз вы так говорите. Сам то я разницы не вижу)
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816573
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AcTiViSioN911Собственно, вот такие критерии:
1) Максимальная скорость чтения\записи, ...
AcTiViSioN911Работает и так:
Ну понятно...
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816678
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ну, да... Пришла пора курсовых...
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816685
AcTiViSioN911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin,

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

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

И, по теме, как правило, критерии 1 и 2 не совместимы.
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816703
AcTiViSioN911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin,

Так все мы стремимся к идеалу, пусть даже это и невозможно. Я получил достаточно информации чтобы продолжить работу.
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816706
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AcTiViSioN911Я получил достаточно информации чтобы продолжить работу.

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

Не ИМХО а нужен)) Не повезло в жизни, учусь всему сам...

Вот так годится? Я старался учесть все требования...
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
            int Time = DateTime.Now.Millisecond; // Таймер - старт
            string[] Strings = new string[2]; // Создаю массив для 2х строк
            Strings[0] = "login";
            Strings[1] = "password";
            MySqlInsert(Strings); // Вставляю строки

...

        public void MySqlInsert(string[] Parameters)
        {
            var MySql = new MySqlCommand { Connection = new MySqlConnection("server=localhost;user id=root;database=users;password=911911"), CommandText = "INSERT INTO users (Login,Password) VALUES (" };
            for (int CurValue = 0; CurValue < Parameters.Length; CurValue++) // Подготовка VALUES и создание параметров
            {
                MySql.CommandText += "?" + CurValue; // Подставить в VALUES
                MySql.Parameters.AddWithValue("?" + CurValue, Parameters[CurValue]); // Добавить параметр
                if (CurValue < Parameters.Length - 1) MySql.CommandText += ",";
            }
            MySql.CommandText += ")";
            MySql.Connection.Open(); // Открыть соединение
            MySql.ExecuteNonQuery(); // Записать
            MySql.Connection.Close(); // Закрыть соединение
        }
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816725
AcTiViSioN911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ой забыл, в конце:
Код: c#
1.
Console.WriteLine(DateTime.Now.Millisecond - Time);


Выдает 110 мс, это нормальный результат? Или слишком медленно?
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816731
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AcTiViSioN911Вот так годится?

Я уже говорил про соответствующий раздел форума.
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816732
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AcTiViSioN911это нормальный результат? Или слишком медленно?

Это Вам решать.
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816734
AcTiViSioN911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklin,

Эм, мне создавать отдельную тему ради одного вопроса? Этот топик уже исчерпал себя, и не думаю что на этом форуме "набивание постов" как-то наказывается. К тому же, ТС тут я.
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816736
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AcTiViSioN911Эм, мне создавать отдельную тему ради одного вопроса?

Вы догадливый! В третий раз повторяю "в соответствующем разделе форума".

AcTiViSioN911Этот топик уже исчерпал себя, и не думаю что на этом форуме "набивание постов" как-то наказывается.

Обратитесь к модератору с просьбой о его закрытии. А то действительно, понимаешь ли, ходят, тут, кому не попадя, посты набивают.

AcTiViSioN911К тому же, ТС тут я.

Мои соболезнования.
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816790
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AcTiViSioN911pkarklin,

Не ИМХО а нужен)) Не повезло в жизни, учусь всему сам...

Вот так годится? Я старался учесть все требования...
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
            int Time = DateTime.Now.Millisecond; // Таймер - старт
            string[] Strings = new string[2]; // Создаю массив для 2х строк
            Strings[0] = "login";
            Strings[1] = "password";
            MySqlInsert(Strings); // Вставляю строки

...

        public void MySqlInsert(string[] Parameters)
        {
            var MySql = new MySqlCommand { Connection = new MySqlConnection("server=localhost;user id=root;database=users;password=911911"), CommandText = "INSERT INTO users (Login,Password) VALUES (" };
            for (int CurValue = 0; CurValue < Parameters.Length; CurValue++) // Подготовка VALUES и создание параметров
            {
                MySql.CommandText += "?" + CurValue; // Подставить в VALUES
                MySql.Parameters.AddWithValue("?" + CurValue, Parameters[CurValue]); // Добавить параметр
                if (CurValue < Parameters.Length - 1) MySql.CommandText += ",";
            }
            MySql.CommandText += ")";
            MySql.Connection.Open(); // Открыть соединение
            MySql.ExecuteNonQuery(); // Записать
            MySql.Connection.Close(); // Закрыть соединение
        }



Я всё думал, почему многие считают SQL-СУБД медленными (я различаю SQL/noSQL и ACID/noACID). Ведь по сути единожды подготавливаются все запросы и парсятся. А затем при каждом обращении к базе отсылаются только параметры. Что в memcached получить key-value, что в Aria(noACID) с prepared-SQL(noSQL) получить ответ на запрос к одной таблице с проиндексированными key-value, через стандартное MySQL подключение.
А сейчас понимаю, для многих prepared-запросы - это выше их понимания :)
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816803
AcTiViSioN911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вася Уткин,

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

Или можно менять и другие значения, например:
"INSERT INTO users (Login,Password) VALUES (?0,?1)"
сделать так:
"INSERT INTO ?0 (?1, .... ) VALUES (?10, .... )"
Так можно?
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816807
AcTiViSioN911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вася Уткин,

Таких примеров я конечно не видел, но мало ли...
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816812
wamaco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AcTiViSioN911,

SQLite вам будет достаточно.
...
Рейтинг: 0 / 0
СУБД для браузерной MMOG (C#)
    #38816858
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AcTiViSioN911Вы предлагаете мне открыть соединения для 1000+ таблиц, а потом не закрывая их писать, читать и т.д.?Вам предлагают спроектировать ваши SQL-запросы и подготавливать параметризованные на нужных соединениях в нужных количествах.

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


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