powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Стоит ли переносить часть бизнес логики на БД?
25 сообщений из 96, страница 1 из 4
Стоит ли переносить часть бизнес логики на БД?
    #39030320
Kimel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я занимаюсь разработкой небольшой erp под определенные нужды (не убийца 1С).
Разработчик я не очень опытный поэтому хотел бы поинтересоваться у профессионалов:
Стоит ли переносить большую часть логики связанной с БД в хранимые процедуры или лучше это обрабатывать в модели приложения?
Бизнес логика состоит как из простых CRUD запросов, так и из сложных запросов, которые затрагивают одновременно большое количество таблиц.

Как себе я представляю архитектуру:
простые CRUD запросы хранятся в модели, ими занимается orm, так как это очень просто.
сложные запросы в хранимых процедурах БД, которые orm будет вызывать.

Возможно я что-то забыл упомянуть, надеюсь вы меня поправите.
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030377
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kimelпростые CRUD запросы хранятся в модели, ими занимается orm, так как это очень просто.
сложные запросы в хранимых процедурах БД, которые orm будет вызывать.
Сложно давать советы не зная ваших задач.
Никто не запрещает комбинировать способы взаимодействия с базой.

Нет единого рецепта. Все зависит от квалификации разработчиков и поставленных задач. Нужно писать на том, что хорошо знаешь.
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030382
Kimel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergueiKimelпростые CRUD запросы хранятся в модели, ими занимается orm, так как это очень просто.
сложные запросы в хранимых процедурах БД, которые orm будет вызывать.
Сложно давать советы не зная ваших задач.
Никто не запрещает комбинировать способы взаимодействия с базой.

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

Прочитал десяток статей и вижу в основном 3 мнения:
1) вся логика обработки данных на промежуточном сервере обрабатывается каким-либо языком программирования
2) тоже самое только в БД
3) комбинирование

У каждого свои аргументы, тут сложно выбирать. Я всё же склоняюсь к тому, что пусть сложные запросы выполняет бд, так как там это налажено оптимизатором запросов, статистикой, индексами и повторять тоже самое нет никакого смысла.

Но и заниматься фанатизмом в виде реализации процедуры под каждый чих тоже не нужно. Этим может заняться orm.
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030424
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kimel,

Если логика будет неизменной - делайте все на стороне БД. Иначе лепите в приложении. Комбинировать не советую - дороже выйдет переделывать.
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030460
caballero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрKimel,

Если логика будет неизменной - делайте все на стороне БД. Иначе лепите в приложении. Комбинировать не советую - дороже выйдет переделывать.
неизменная логика - это оксюморон
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030465
caballero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kimel,

логика в Бд - решения тридцатилетней давности. Разве что какой нибудь аудит там внутри можно на триггерах делать.

Поверьте мне как разработчику тоже своей erp (убийцо 1C :) ) - в таких проектах логика должна быть сосредоточена в одном месте, условно называемом сервером приложений. Вообще большинство энтерпрайз решений так и построены - БД это плоское хранилище для того чтобы быстро положить и взять данные.
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030503
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KimelЯ занимаюсь разработкой небольшой erp под определенные нужды (не убийца 1С).
Разработчик я не очень опытный поэтому хотел бы поинтересоваться у профессионалов:
Стоит ли переносить большую часть логики связанной с БД в хранимые процедуры или лучше это обрабатывать в модели приложения?
Бизнес логика состоит как из простых CRUD запросов, так и из сложных запросов, которые затрагивают одновременно большое количество таблиц.

Как себе я представляю архитектуру:
простые CRUD запросы хранятся в модели, ими занимается orm, так как это очень просто.
сложные запросы в хранимых процедурах БД, которые orm будет вызывать.

Возможно я что-то забыл упомянуть, надеюсь вы меня поправите.

РМД это сильно ограниченная модель. Поэтому были "придуманы" процедурные расширения (например TSQL, plsql), чтобы обойти ее ограничения.
Выбирая перенос логики в БД вы привязываетесь к вендору СУБД.
"Промежуточные" варианты не живучи, т.к. нужны специалисты которые хорошо знают и ЯП, и язык ХП конкретной СУБД.
В конце, концов "остаться должен только один" и обычно это программист БД.
Так что если остановитесь на БЛ в ХП, то сразу пишите REST-сервисы в БД.

Лично я бы рекомендовал в СУБД хранить только данные.
Причем без всяких ХП. Только голый SQL.

А всю БЛ писать на удобном для вас ЯП.

ORM так же бы не рекомендовал использовать (Точнее не пытатся ч\з ORM хранить объекты).
Все равно придется писать слой, который будет перекладывать сущности в необходимые объекты.
А хранение объектов в БД, приведет к тому, что придется писать ХП.
И БЛ "размажется" м/у сервером приложений и БД.
Что плохо скажется на сопровождаемости проекта.

P.S. А так, решайте сами. Вы должны сами наступить на все грабли, чтобы понять, какие грабли для вас предпочтительнее. :-)
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030516
Kimel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
caballero,
mad_nazgul,

Я так понимаю, если я буду всю бд логику хранить в модели (включая взаимоотношения таблиц все эти каскадные удаления и прочее), то я всё равно столкнусь с тем, что допустим у меня уже сейчас в хранимой процедуре лежит запрос на 100 строк и не какой-то монстр в виде 50 джоинов, нет, нормальный запрос простые он с нарастающим итогом и другими плюшками.
Я реализовал его с помощью процедурного языка (то есть сделал несколько элементарных селектов, а все остальные операции делала уже другая программа) и в виде запроса SQL и когда сравнил скорость выполнения то всё стало на свои места. Оптимизатор запросов в субд решает!

И выходит, что даже если я буду подобные запросы хранить в модели в виде raw sql, то я всё равно получаю привязку к вендорам, так как нужно этот raw sql писать под каждую базу.

Мне не понятно, как и где хранить сложные запросы?
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030526
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kimelcaballero,
mad_nazgul,

Я так понимаю, если я буду всю бд логику хранить в модели (включая взаимоотношения таблиц все эти каскадные удаления и прочее), то я всё равно столкнусь с тем, что допустим у меня уже сейчас в хранимой процедуре лежит запрос на 100 строк и не какой-то монстр в виде 50 джоинов, нет, нормальный запрос простые он с нарастающим итогом и другими плюшками.


Для чего этот запрос?
В обычном CRUD приложении это не нужно.
Это либо нужно для "отчетов", либо для "аналитки".
В первом случае лучше использовать построитель отчетов (для меня JasperReports).
Во втором случае использовать OLAP (для меня Mordrian)

KimelЯ реализовал его с помощью процедурного языка (то есть сделал несколько элементарных селектов, а все остальные операции делала уже другая программа) и в виде запроса SQL и когда сравнил скорость выполнения то всё стало на свои места. Оптимизатор запросов в субд решает!


Если можно получить данные из SQL запроса, то лучше получить данные из SQL-запроса.
Опять же повторю ХП-это костыль, т.к. РМД очень ограниченная модель.
Можно использовать этот костыль, когда это оправдано.
Но его использование лишает смысла "слоя-приложения".
Т.е. проще будет сделать клиента (отображение), который будет напрямую работать с БД ч/з ХП.
Так можно. Почему бы и нет.
Но для меня не очень удобно.

KimelИ выходит, что даже если я буду подобные запросы хранить в модели в виде raw sql, то я всё равно получаю привязку к вендорам, так как нужно этот raw sql писать под каждую базу.


Зачем?
Все современные SQL-БД как минимум поддерживают SQL-99.
Более новые "фичи" надо смотреть по реализации.

KimelМне не понятно, как и где хранить сложные запросы?

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

P.S. Сделать свою "OLAP на коленке" можно, но не нужно, т.к. они уже сделаны :-)
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030529
Kimel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul,

Хорошо, я объясню зачем нужен этот запрос.
Если кратко, то он реализует алгоритм FIFO то есть по количеству товара в заказе и позициям, ищет нужные партии с которых он спишет этот товар (само с собой на вход я ему даю весь заказ (например 150 позиций разных товаров, а на выход получаю >= 150 строк (потому, что если партия заканчиваться, то ищется следующая партия и так пока вся позиция не спишется))) которые нужно update . На процедурном языке реализация занимает намного больше строк чем на sql.

То есть эта штука не отчет и не аналитика, а часть бизнес-логики.
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030543
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
caballeroПоверьте мне как разработчику тоже своей erp (убийцо 1C :) ) - в таких проектах логика должна быть сосредоточена в одном месте, условно называемом сервером приложений. Вообще большинство энтерпрайз решений так и построены - БД это плоское хранилище для того чтобы быстро положить и взять данные.
Нет принципиальной разницы, логика на аппрервере или клиенте. Аппрервер это толстный клиент, кот. отдает записи тонкому клиенту.
Глупо по сабжу ссылаться на энтерпрайз решения. Зачастую именно они - решения 30-й давности. "старики на стероидах" (с).
Там логика вне сервсера - только ради кроссплатформенности и удлинения жизненного цикла. Тем более большинство энтерпрайза пришли еще с файл-сервера и в полной мере сохранили черты именно файл-сервера.

Для обработки данных (парсинг картинок и тхт не обсуждаем) нет ничего лучше родного языка БД. Поэтому львиная доля б/л должна быть в БД, ИМХО. Правда жертвовать придется кроссплатформенностью. :(

зы: как вспомню мегапортянки спагетти-кода C/AL или 1С - дурно становится. :)
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030553
xenix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПравда жертвовать придется кроссплатформенностью
Интересно, а "большой энтерпрайз" часто ездит между СУБД?
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030576
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xenixавторПравда жертвовать придется кроссплатформенностью
Интересно, а "большой энтерпрайз" часто ездит между СУБД?За 30 лет много разных БД поменялось. :)
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030577
Kimel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xenixавторПравда жертвовать придется кроссплатформенностью
Интересно, а "большой энтерпрайз" часто ездит между СУБД?
Я думаю, он имел ввиду, что при разработке erp лучше не жертвовать кроссплатформенностью
То есть если например я разрабатываю продукт для бизнеса, то было бы отлично, если мои клиенты (то есть бизнес) могли бы выбирать себе СУБД какую хотели.

То есть дело не в переезжании, а в предоставлении выбора СУБД при разработке продукта.
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030588
dvim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kimel,Я думаю, он имел ввиду, что при разработке erp лучше не жертвовать кроссплатформенностью

Для небольших коллективов поддержание кратковременности по СУБД - банально дорого. И ненужно.
Глубокое имхо.
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030593
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KimelЯ думаю, он имел ввиду, что при разработке erp лучше не жертвовать кроссплатформенностью
То есть если например я разрабатываю продукт для бизнеса, то было бы отлично, если мои клиенты (то есть бизнес) могли бы выбирать себе СУБД какую хотели.

То есть дело не в переезжании, а в предоставлении выбора СУБД при разработке продукта.Но предоставляя кросс/п. теряется оптимальность в работе с данными. Мягко говоря.

Приведу простой пример на примере Навижена:
Допустим Вам надо увеличить на единичку значение поля в тыще записей .
Навижн делает (на толстом клиенте) :
Ставит фильтр на таблицу (получить тыщу записей)
Зачитывает первую строку по ключу.
Увеличивает значение поля+1 и постит update-запрос.
Перечитывает запись по ключу.
Переходит на следующую запись...

Трафик просто бешенный. Пример крайне примитивный, т.к. обычно нужно проделать подчитку еще с неск. таблиц (н-р отчет или обработка).

Для миллиона записей процесс может затянуться на всю ночь. :)
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030599
Kimel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LSVKimelЯ думаю, он имел ввиду, что при разработке erp лучше не жертвовать кроссплатформенностью
То есть если например я разрабатываю продукт для бизнеса, то было бы отлично, если мои клиенты (то есть бизнес) могли бы выбирать себе СУБД какую хотели.

То есть дело не в переезжании, а в предоставлении выбора СУБД при разработке продукта.Но предоставляя кросс/п. теряется оптимальность в работе с данными. Мягко говоря.

Приведу простой пример на примере Навижена:
Допустим Вам надо увеличить на единичку значение поля в тыще записей .
Навижн делает (на толстом клиенте) :
Ставит фильтр на таблицу (получить тыщу записей)
Зачитывает первую строку по ключу.
Увеличивает значение поля+1 и постит update-запрос.
Перечитывает запись по ключу.
Переходит на следующую запись...

Трафик просто бешенный. Пример крайне примитивный, т.к. обычно нужно проделать подчитку еще с неск. таблиц (н-р отчет или обработка).

Для миллиона записей процесс может затянуться на всю ночь. :)
Разве эту проблему куммулятивные запросы не решают?
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030616
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KimelРазве эту проблему куммулятивные запросы не решают?Что такое КЗ ? Сторонний запрос/ХП ?
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030620
Kimel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LSV,

Это когда запросы типа как вы сказали:
авторЗачитывает первую строку по ключу.
Увеличивает значение поля+1 и постит update-запрос.
Перечитывает запись по ключу.
Переходит на следующую запись...
это накапливается в течении например 200мс, а потом идёт одним целым запросом, а не тысячей. Такое умеют делать многие orm, ну и postgre нативно такое делает (в конфиге настраиваться)
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030637
mad_nazgulОпять же повторю ХП-это костыль
ХП - это средство расширения функциональных возможностей СУБД, вплоть до наличия в БД встроенного сервера приложений (PL/SQL-машина в Oracle), а костыль - у вас из головы торчит...
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030640
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоит ли переносить большую часть логики связанной с БД в хранимые процедуры или лучше это обрабатывать в модели приложения?
Бизнес логика состоит как из простых CRUD запросов, так и из сложных запросов, которые затрагивают одновременно большое количество таблиц.


Ну это вопрос очень сложный.
От многого зависит. Например, от общей архитектуры системы. Взять 1С -- у неё есть внутренний язык, бизнеслогика на нём,
и внутрь БД (в виде голых процедур) это всё не запихать в принципе. Также плохо переносить внутрь БД БЛ, если предусматривается
несколько возможных к использованию СУБД.

Можно привести также доводы за БЛ в БД: просто писать, мощный язык для программирования, данные близко -- повышается производительность за счёт того, что нет раундтрипов клиент-БД-клиент.
Но минусы -- сложность взаимодействия из БД с другими компонентами системы (если они есть) - бд в таком случае должна быть финальным тупиковым пассивным компонентом системы, в неё можно войти потоком управления, а выйти уже нельзя -- только отдать
результаты работы.



Как себе я представляю архитектуру:
простые CRUD запросы хранятся в модели, ими занимается orm, так как это очень просто.
сложные запросы в хранимых процедурах БД, которые orm будет вызывать.


Скрещивать ORM с Бл в БД будет достаточно трудно из-за кэшей ORM-а. Они будут все время тебе мешать -- надо будет завершать транзакции только для того, чтобы данные попали в БД.
Я бы делать такое не стал. Либо всё в БД, включая CRUD (его код можно и нужно сгенерировать), либо ORM и БЛ на среднем слое.
Но я сам не пробовал так, возможно, не всё так плохо как мне кажется.
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030641
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KimelLSV,

Это когда запросы типа как вы сказали:
авторЗачитывает первую строку по ключу.
Увеличивает значение поля+1 и постит update-запрос.
Перечитывает запись по ключу.
Переходит на следующую запись...
это накапливается в течении например 200мс, а потом идёт одним целым запросом, а не тысячей. Такое умеют делать многие orm, ну и postgre нативно такое делает (в конфиге настраиваться)А в реале достаточно одного простого update. Без всей перечисленной лабуды. И трафик будет - меньше некуда.
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030646
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
caballeroKimel,

логика в Бд - решения тридцатилетней давности. Разве что какой нибудь аудит там внутри можно на триггерах делать.


Это досужие домыслы. Логика в БД -- это надёжно, просто и мощно. И как следствие гибко.
Если весь мир ударился в моду многозвенок (что, кстати, вовсе не исключает логику в БД), это ещё не значит, что это хорошо.
Завтра будет мода ходить без штанов -- мне прикажете тоже штаны снимать ?
Нет уж.

caballeroПоверьте мне как разработчику тоже своей erp (убийцо 1C :) ) - в таких проектах логика должна быть сосредоточена в одном месте, условно называемом сервером приложений. Вообще большинство энтерпрайз решений так и построены - БД это плоское хранилище для того чтобы быстро положить и взять данные.

Это вызвано тем, что им необходимо использовать разные СУБД, а это практически однозначно требует переноса БЛ из БД.
Но такое требование не всегда существует, можно радостно жить на одной СУБД, и горя не знать.
Oracle, MSSQL или Postgres -- выбираешь одно из них, и живёшь с ним всю жизнь. Как жену выбирают раз и на всю жизнь.
Но надо естественно тщательно выбирать.

С логикой вне БД также много проблем. Это сложный, мелкий код, потому что язык как правило тупой и немощный, типа Java,
либо необходимость писать и поддерживать свой высокоуровневый 4gl язык. Из сложного и громоздкого кода следует его
большая сложность поддерки и как следствие негибкость всей системы.
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030647
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulKimelЯ занимаюсь разработкой небольшой erp под определенные нужды (не убийца 1С).
Разработчик я не очень опытный поэтому хотел бы поинтересоваться у профессионалов:
Стоит ли переносить большую часть логики связанной с БД в хранимые процедуры или лучше это обрабатывать в модели приложения?
Бизнес логика состоит как из простых CRUD запросов, так и из сложных запросов, которые затрагивают одновременно большое количество таблиц.

Как себе я представляю архитектуру:
простые CRUD запросы хранятся в модели, ими занимается orm, так как это очень просто.
сложные запросы в хранимых процедурах БД, которые orm будет вызывать.

Возможно я что-то забыл упомянуть, надеюсь вы меня поправите.

РМД это сильно ограниченная модель. Поэтому были "придуманы" процедурные расширения (например TSQL, plsql), чтобы обойти ее ограничения.
Выбирая перенос логики в БД вы привязываетесь к вендору СУБД.
"Промежуточные" варианты не живучи, т.к. нужны специалисты которые хорошо знают и ЯП, и язык ХП конкретной СУБД.
В конце, концов "остаться должен только один" и обычно это программист БД.
Так что если остановитесь на БЛ в ХП, то сразу пишите REST-сервисы в БД.

Лично я бы рекомендовал в СУБД хранить только данные.
Причем без всяких ХП. Только голый SQL.

А всю БЛ писать на удобном для вас ЯП.

ORM так же бы не рекомендовал использовать (Точнее не пытатся ч\з ORM хранить объекты).
Все равно придется писать слой, который будет перекладывать сущности в необходимые объекты.
А хранение объектов в БД, приведет к тому, что придется писать ХП.
И БЛ "размажется" м/у сервером приложений и БД.
Что плохо скажется на сопровождаемости проекта.

P.S. А так, решайте сами. Вы должны сами наступить на все грабли, чтобы понять, какие грабли для вас предпочтительнее. :-)

Ну дальше тоже пошли фантазии на вольную тему. ТС, читай сквозь пальцы, думай сам...
...
Рейтинг: 0 / 0
Стоит ли переносить часть бизнес логики на БД?
    #39030651
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KimelИ выходит, что даже если я буду подобные запросы хранить в модели в виде raw sql, то я всё равно получаю привязку к вендорам, так как нужно этот raw sql писать под каждую базу.

Мне не понятно, как и где хранить сложные запросы?

Ну решение хранить сложные запросы на среднем слое тоже вполне себе нормальное, ORM предоставляют возможности делать это
в виде ресурсных файлов под каждую СУБД.

Но я бы просто написал бы код на XXXSQL соотв. СУБД и клал бы его в скрипт инициализации БД.
...
Рейтинг: 0 / 0
25 сообщений из 96, страница 1 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Стоит ли переносить часть бизнес логики на БД?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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