Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Модель работы с БД в системе OLTP, реализация системы приема платежей 
:(
    Опции темы
HugeX
Дата 30.9.2010, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.9.2009

Репутация: нет
Всего: нет



Добрый день всем участникам форума!

Я занимаюсь разработкой системы для приема платежей и у меня возникли некоторые вопросы по поводу организации работы с базой данных. Вот структура системы, которая есть на данный момент:
- существует N серверов, которые принимают запросы от клиентов и заносят их в таблицу транзакций, присваивая им определенный статус (к примеру, требует обработки)
- существует M запущенных программ на серверах, которые вытягивают из таблицы транзакций записи, которые требуют обработки и обрабатывают их

Сейчас я думаю, как сделать так, чтоб две программы не смогли вытянуть одновременно одну и ту же запись. Естественно, как только я достаю запись, я ставлю ей другой статус, но это не спасает ситуацию. Я так думаю, что тут нужно использовать механизм блокировки таблицы на чтение или устанавливать TRANSACTION ISOLATION LEVEL в SERIALIZABLE во время извлечения записи и изменения её статуса.

В общем, кто имел дело с подобными системами или больше меня разбирается в работе с БД, пожалуйста, высказывайте свои мысли smile
PM MAIL   Вверх
Zloxa
Дата 30.9.2010, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



платформа?


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
HugeX
Дата 30.9.2010, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.9.2009

Репутация: нет
Всего: нет



На моём компьютере стоит Windows 7 + Java + MySQL Server 5.1
На сервере, где это всё будет работать - Debian + Java + MySQL Server 5.1
PM MAIL   Вверх
Zloxa
Дата 30.9.2010, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



К сожалению в особенностях работы блокировок MySQL я мало сведущ.
Тому, кто сведущ, еще бы, наверняка, помогло упоминание движка MySql(хотя елсли речь идет об изоляции транзакций, думаю это InnoDB) и будет будет ли жава использоваться как мидлваря или как клиент? В смысле - сколькизвенка?

А если так, чисто помыслить вслух, я бы для начала порекомендовал попытаться смоделировать чтение в сериалайзабл с последующим апдейтом по критерию отбора в многопользовательском режиме. Сдается мне что многопользовательский доступ может деградировать в однопользовательский, и в один момент времени работать будет только один из N процессов, остальные - толкаться на блокировке.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
HugeX
Дата 30.9.2010, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.9.2009

Репутация: нет
Всего: нет



Я так понял, вы имеете ввиду, устанавливать в SERIALIZABLE, потом выбирать запись, изменять её статус и возвращать уровень изоляции в первоначальный? Кстати, какой он по дефолту?
PM MAIL   Вверх
Zloxa
Дата 30.9.2010, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



HugeX, я предполагаю, что если вы будете так поступать, то сериализуете транзакции чуть более чем полностью. Смысла пускать N процессов не будет никакого. Работать в один момент времени будет только один.

Поменять уровень изоляции конкретной транзакции, скорее всего невозможно, если такая возможность не является, конечно, особенностью MySQL, что врядли.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
HugeX
Дата 30.9.2010, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.9.2009

Репутация: нет
Всего: нет



Я думаю, это будет иметь смысл, так как время обработки конкретной транзакции намного превышает время выборки, так как нужно ждать ответ от провайдера.
, 
PM MAIL   Вверх
Zloxa
Дата 30.9.2010, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



Цитата(HugeX @  30.9.2010,  13:48 Найти цитируемый пост)
Я думаю, это будет иметь смысл, так как время обработки конкретной транзакции намного превышает время выборки, так как нужно ждать ответ от провайдера.

Я Вас совсем тут не понял. Видать мы говорим о разных вещах. Я уже много раз зарекался пытаться помогать в том, в чем сам не вполне компетентен, даже если тема мне очень интересна.

Я тут попробовал побаловаться на MS SQL с serializeable. У меня получилось из двух сессий выбраться в этом режиме изоляции, на блокировке встал первый апдейт. В этом контексте мне перестало быть понятным приемущество для данной задачи serializeable перед read commited.

Это сообщение отредактировал(а) Zloxa - 30.9.2010, 14:10


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Zloxa
Дата 6.10.2010, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



HugeX, ну как у Вас там дела? не поделитесь принятыми решениями?


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.