powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Хранение данных с гибкой структурой и запросы к ним
25 сообщений из 257, страница 2 из 11
Хранение данных с гибкой структурой и запросы к ним
    #38248723
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод.... Если нет, то делайте сами. В основе ессно EAV.

Особенно должна вдохновлять идея "делать самим" с учетом:

[Максим Н]Про EAV согласен, но в моем случае мало подходит.
[/quot]
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38248768
eny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
eny
Гость
Максим Нeny,

Большое спасибо за советы, учту.
Но ИМХО Вашу критику предложенного метода на хабре (кстати только одного из них, и от которого я в конце концов отказался уже) Вы ни чем не обосновали (был бы очень благодарен за это).
И альтернативных вариантов предложено тоже не было (так же был бы весьма благодарен), кроме того как почитать "классику".

авторВместо того, чтобы написать нормальный фреймворк экранирующий SQL Server
А вот здесь можно поподробнее?

статья на хабре вообще ни о чем, чего-то там у пацана с базами не срослось и начались сопли пузырями

По факту я сам фреймворк написал, и еще с три-четыре всяких реализаций видел, где все можно поменять и храниться все в реляционных базах
При небольшом умении программировать хранимки и проектировать структуру БД, все можно сделать настраиваемым. вплоть до динамической генерации create table/alter table/drop table

как пример открытого есть vtiger CRM - вроде открытый исходник на php и my sql - дешево и сердито
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38248801
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enyПо факту я сам фреймворк написал, и еще с три-четыре всяких реализаций видел, где все можно поменять и храниться все в реляционных базах

Вы сейчас о EAV говорите?

enyПри небольшом умении программировать хранимки и проектировать структуру БД, все можно сделать настраиваемым. вплоть до динамической генерации create table/alter table/drop table

Или о физическом создании отдельной таблицы для каждой пользовательской сущности?
Ведь в многопользовательской среде с этим проблемы могут быть, да и вообще create(drop) table это дорогая операция (в зависимости от СУБД конечно) и дергать ее при каждом пользовательском чихе (очобенно если их будет больше одного) не очень прильщает. Поправьте если не прав.

enyкак пример открытого есть vtiger CRM - вроде открытый исходник на php и my sql - дешево и сердито
Спасибо, посмотрю.


ПС
Я о том, что проблема достаточно распространенная (тот же самый каталог товаров избитый например), а вот универсальных готовых решений не очень много.
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38249760
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Н,

Ну что значит "дорогая операция"?
Рядовой пользователь создавать/удалять сущности(таблички)/атрибуты(поля) не должен иметь прав.

Только специальный.

Сделай систему со словарем: чтобы было описание сущностей, их полей, и связей между сущностями. А сами сущности реализуй в физических табличках. Система будет иметь и словарь данных, и не будет иметь eav - проблем с производительностью.
Процесс модификации таких пользовательских метаданных можно вынести в особую сессию: "Всем выйти из моей программы!". Набрать в процессе редактирования таких "метаданных" пакет изменений, потом проверить, что ты единственный, кто подконнектился, и выполнить итоговый модифицирующий скрипт. Можно отконнекчивать прочих пользователей административными методами, а можно специальное сообщение рассылать. Варианты есть, реализовать несложно.
Так часто делают. Не для всех СУБД получится "в лоб": к примеру, в MS SQL нехилое ограничение на суммарный размер записи и т.д. В любом случае, обходные пути есть.
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38249883
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvmв MS SQL нехилое ограничение на суммарный размер записи и т.д.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE T1(col1 varchar(8000), col2 varchar(8000), col3 varchar(8000))
GO

INSERT T1 (col1, col2, col3) VALUES(REPLICATE('A', 8000), REPLICATE('B', 8000), REPLICATE('C', 8000))
GO

SELECT DATALENGTH(col1) + DATALENGTH(col2) + DATALENGTH(col3) FROM T1
GO

DROP TABLE T1
GO




Код: plaintext
1.
2.
3.
4.
5.
(1 row(s) affected)

-----------
24000

(1 row(s) affected)
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38249890
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НВедь в многопользовательской среде с этим проблемы могут быть, да и вообще create(drop) table это дорогая операция (в зависимости от СУБД конечно) и дергать ее при каждом пользовательском чихе (очобенно если их будет больше одного) не очень прильщает.Все в этом мире относительно. Если каждый объект сам по себе и имеет свою неповторимую структуру, то создавать таблицу по каждому чиху - смысла нет. Но правда и какой-либо словарь в этом случае мало поможет. Если же объекты допускают словарное описание, то есть нормально классифицируются в некоторое количество типов, то создание таблицы на каждый тип вполне возможно и никакой убийственной нагрузки не создаст. Число возможных типов и их атрибутов, очень легко оценить, и сомневаюсь, что в процессе эксплуатации модификация словаря будт происходить чаще раза в день.
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38250680
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinvvmв MS SQL нехилое ограничение на суммарный размер записи и т.д.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE T1(col1 varchar(8000), col2 varchar(8000), col3 varchar(8000))
GO

INSERT T1 (col1, col2, col3) VALUES(REPLICATE('A', 8000), REPLICATE('B', 8000), REPLICATE('C', 8000))
GO

SELECT DATALENGTH(col1) + DATALENGTH(col2) + DATALENGTH(col3) FROM T1
GO

DROP TABLE T1
GO




Код: plaintext
1.
2.
3.
4.
5.
(1 row(s) affected)

-----------
24000

(1 row(s) affected)

Ну вот и ладушки: считай, что "в мс скл сервер ограничений на суммарный размер записи нет"
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38250687
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО, тема должна быть в разделе "пректирование", а не "сравнение".
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38255468
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Н,

авторНе хотелось бы устраивать очередную EAV'шную баталию...
Инфы много, мне нравится например эта статья - https://www.simple-talk.com/opinion/opinion-pieces/bad-carma/

EAV можно реализовать по-разному.
Вы ссылаетесь на вырожденный случай, когда и данные, и метаданные, и сущности, и атрибуты (columns) лежали в одной таблице Data.
Есть вариант EAV на три таблицы, есть на пять таблиц и более.
Например, набор табличек:
- типы сущностей
- сущности
- типы связей сущностей
- связи сущностей
- типы атрибутов
- шаблоны (список атрибутов для типа сущности)
- таблица значений.
При таком наборе таблиц в несколько раз меньше джойнов потребуется, особенно, если в таблицу сущностей включить базовый набор атрибутов (название и пр.).
Здесь на форуме упоминалось успешное применение EAV-систем.
В Вашем случае авторпользователь с помощью графического интерфейса добавляет информацию о любых предметах (сущностях) (дом(номер дома количество квартир...), автомобиль (масса, макс. скорость, цена...), стиральная машинка (объем, энергопотребление, цвет...)), а затем может работать с этими сущностями:
— добавлять-редактировать экземпляры (записи, данные);
— создавать связи между сущностями (при удалении информации о доме, удяляется вся информация о стиралках, установленных в нем);
— составлять запросы к этим сущностям, например: «найти все зеленые стиральные машины в квартирах домов с четными номерами на 5-м этаже» (с помощью QBE, либо, в особых случаях, с помощью встроенного языка запросов СУБД).

не похоже, что речь идет о гигабайтах данных, поэтому согласен с _мод:
авторЭто не СУБД, а фраймворк. Попросите, м.б. кто-то и поделится. Если нет, то делайте сами. В основе ессно EAV. СУБД любая.
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38257298
PSV100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Animotron - ещё один взгляд на альтернативную жизнь (плюс здесь и здесь ). Модератор: как-то на скрытую рекламу смахивает, если не будет пояснений - пост сотру
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38258519
PSV100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Модераторкак-то на скрытую рекламу смахивает, если не будет пояснений - пост сотру

Лично я к этому проекту не имею никакого отношения. Вот чего желает ТС:
Максим ННеобходима СУБД, удовлетворящая следующим требованиям (вкратце):

пользователь с помощью графического интерфейса добавляет информацию о любых предметах (сущностях) (дом(номер дома количество квартир...), автомобиль (масса, макс. скорость, цена...), стиральная машинка (объем, энергопотребление, цвет...)), а затем может работать с этими сущностями:
— добавлять-редактировать экземпляры (записи, данные);
— создавать связи между сущностями (при удалении информации о доме, удяляется вся информация о стиралках, установленных в нем);
— составлять запросы к этим сущностям, например: «найти все зеленые стиральные машины в квартирах домов с четными номерами на 5-м этаже» (с помощью QBE, либо, в особых случаях, с помощью встроенного языка запросов СУБД).

Т.е. что то наподобие Акссесса, но более легкое и простое. Т.е. физическое создание реляционных таблиц для каждой пользовательской сущности не самый лучший вариант. Планируется WEB-интерфейс.
...
Но недавно в очередной раз наткнулся на Neo4j и подумываю, чтобы заюзать ее.

Подскажите, может ли она подойти к подобной задаче?
Какие есть другие варианты?

Именно всё это и имеется в этом проекте, в т.ч. как раз поверх Neo4j. Причём это не только некая альтернатива решениям на основе реляционных баз (включая и для EAV), но и, в целом, другой взгляд на разработку информационных систем (отчасти Акссессо-подобный). Я не в курсе, насколько продукт пригоден для использования (думаю, что не очень), но проект интересен, прежде всего, концептуально. Особенно привлекательны способы обработки данных, что можно взять себе на вооружение, причём не только в рамках какой-то NoSQL. Весьма рекомендую ознакомиться.
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38269146
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PSV100Модераторкак-то на скрытую рекламу смахивает, если не будет пояснений - пост сотру

Лично я к этому проекту не имею никакого отношения. Вот чего желает ТС:
Максим ННеобходима СУБД, удовлетворящая следующим требованиям (вкратце):

пользователь с помощью графического интерфейса добавляет информацию о любых предметах (сущностях) (дом(номер дома количество квартир...), автомобиль (масса, макс. скорость, цена...), стиральная машинка (объем, энергопотребление, цвет...)), а затем может работать с этими сущностями:
— добавлять-редактировать экземпляры (записи, данные);
— создавать связи между сущностями (при удалении информации о доме, удяляется вся информация о стиралках, установленных в нем);
— составлять запросы к этим сущностям, например: «найти все зеленые стиральные машины в квартирах домов с четными номерами на 5-м этаже» (с помощью QBE, либо, в особых случаях, с помощью встроенного языка запросов СУБД).

Т.е. что то наподобие Акссесса, но более легкое и простое. Т.е. физическое создание реляционных таблиц для каждой пользовательской сущности не самый лучший вариант. Планируется WEB-интерфейс.
...
Но недавно в очередной раз наткнулся на Neo4j и подумываю, чтобы заюзать ее.

Подскажите, может ли она подойти к подобной задаче?
Какие есть другие варианты?

Именно всё это и имеется в этом проекте, в т.ч. как раз поверх Neo4j. Причём это не только некая альтернатива решениям на основе реляционных баз (включая и для EAV), но и, в целом, другой взгляд на разработку информационных систем (отчасти Акссессо-подобный). Я не в курсе, насколько продукт пригоден для использования (думаю, что не очень), но проект интересен, прежде всего, концептуально. Особенно привлекательны способы обработки данных, что можно взять себе на вооружение, причём не только в рамках какой-то NoSQL. Весьма рекомендую ознакомиться.

Спасибо, именно эти статьи и привели меня к мысле попробовать заюзать графовую базу для таких дел. К сам ому Animotron'у я еще не готов, а вот Neo4j, почему бы и нет.
Зафигачить EAV и радоваться жизни это не проблема, только вот как то надоело, интересно решить данную задачу подругому, с использованием более подходящих для этого инструментов (или выяснить для себя, что это не так), поэкспериментировать (тем более текущий проект позволяет пока).
Если кому будет интересно могу отписаться о своей попытке, когда будут результаты.
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38269151
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DirksDRМаксим Н,

авторНе хотелось бы устраивать очередную EAV'шную баталию...
Инфы много, мне нравится например эта статья - https://www.simple-talk.com/opinion/opinion-pieces/bad-carma/

EAV можно реализовать по-разному.
Вы ссылаетесь на вырожденный случай, когда и данные, и метаданные, и сущности, и атрибуты (columns) лежали в одной таблице Data.
Есть вариант EAV на три таблицы, есть на пять таблиц и более.
Например, набор табличек:
- типы сущностей
- сущности
- типы связей сущностей
- связи сущностей
- типы атрибутов
- шаблоны (список атрибутов для типа сущности)
- таблица значений.
При таком наборе таблиц в несколько раз меньше джойнов потребуется, особенно, если в таблицу сущностей включить базовый набор атрибутов (название и пр.).
Здесь на форуме упоминалось успешное применение EAV-систем.
В Вашем случае авторпользователь с помощью графического интерфейса добавляет информацию о любых предметах (сущностях) (дом(номер дома количество квартир...), автомобиль (масса, макс. скорость, цена...), стиральная машинка (объем, энергопотребление, цвет...)), а затем может работать с этими сущностями:
— добавлять-редактировать экземпляры (записи, данные);
— создавать связи между сущностями (при удалении информации о доме, удяляется вся информация о стиралках, установленных в нем);
— составлять запросы к этим сущностям, например: «найти все зеленые стиральные машины в квартирах домов с четными номерами на 5-м этаже» (с помощью QBE, либо, в особых случаях, с помощью встроенного языка запросов СУБД).

не похоже, что речь идет о гигабайтах данных, поэтому согласен с _мод:
авторЭто не СУБД, а фраймворк. Попросите, м.б. кто-то и поделится. Если нет, то делайте сами. В основе ессно EAV. СУБД любая.


Спасибо за рекомендации. Я в принципе знаком с EAV, но почитаю еще, может чего то не понимаю или не правильно использую.
А как бы могла быть решена данная задача средствами Cashe ?
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38269157
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyМаксим НВедь в многопользовательской среде с этим проблемы могут быть, да и вообще create(drop) table это дорогая операция (в зависимости от СУБД конечно) и дергать ее при каждом пользовательском чихе (очобенно если их будет больше одного) не очень прильщает.Все в этом мире относительно. Если каждый объект сам по себе и имеет свою неповторимую структуру, то создавать таблицу по каждому чиху - смысла нет. Но правда и какой-либо словарь в этом случае мало поможет. Если же объекты допускают словарное описание, то есть нормально классифицируются в некоторое количество типов, то создание таблицы на каждый тип вполне возможно и никакой убийственной нагрузки не создаст. Число возможных типов и их атрибутов, очень легко оценить, и сомневаюсь, что в процессе эксплуатации модификация словаря будт происходить чаще раза в день.

В том то и дело я пока не могу это оценить.
Предполагается что то наподобие как в Экселе: т.е. пользователь может создать Лист, на нем разместить таблицу(ы), заполнить тестовыми данными, что то посчитать, а потом удалить (может даже не сохраняя), а может сохранить и работать с ней годами, добавляя данные, формулы, зависимые Листы, графики и всячески усложняя.
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38269161
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НПредполагается что то наподобие как в Экселе
А если нужен Эксель, так и ступай к Экселю. (с) почти НВГ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38269169
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovМаксим НПредполагается что то наподобие как в Экселе
А если нужен Эксель, так и ступай к Экселю. (с) почти НВГ.


1. Нужны запросы к тому что пользователь "надизайнил", причем как графический построитель, так и возможность написать их ручками
2. Нужен Веб-интерфейс
3. Нужен какой никакой контроль целостности, описание схемы (для построения интерфеса например)
4. Ну так же вопросы производительности, масштабируемости и пр.
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38269374
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Н1. Нужны запросы к тому что пользователь "надизайнил", причем как графический построитель, так и возможность написать их ручками
2. Нужен Веб-интерфейс
3. Нужен какой никакой контроль целостности, описание схемы (для построения интерфеса например)
4. Ну так же вопросы производительности, масштабируемости и пр.

Вы только что описали MS SQL Manager ;-)
Попробуйте EMS PostgreSQL Manager.

P.S. Для FireBird есть IBExpert - она еще и бесплатная.
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38270371
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulМаксим Н1. Нужны запросы к тому что пользователь "надизайнил", причем как графический построитель, так и возможность написать их ручками
2. Нужен Веб-интерфейс
3. Нужен какой никакой контроль целостности, описание схемы (для построения интерфеса например)
4. Ну так же вопросы производительности, масштабируемости и пр.

Вы только что описали MS SQL Manager ;-)
Попробуйте EMS PostgreSQL Manager.

P.S. Для FireBird есть IBExpert - она еще и бесплатная.

"Пользователь" там такого "надизайнит" - мама не горюй.
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38270526
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulВы только что описали MS SQL Manager ;-)Это вечная проблема фреймворков - каждый разработчик фреймворка пытается сделать некое управление "гибкой структурой", при этом не желает или не может оценить степень необходимой пользователю гибкости.
В итоге получается некий велосипед, который для программиста уже не удобен, так как слишком сильно его ограничивает, а для пользователя еще не удобен, так как требует слишком глубокого понимания основ программирования.
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38271221
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvm"Пользователь" там такого "надизайнит" - мама не горюй.

Ну Access предназначен для конечного пользователя. ;-)
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38271223
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andreymad_nazgulВы только что описали MS SQL Manager ;-)Это вечная проблема фреймворков - каждый разработчик фреймворка пытается сделать некое управление "гибкой структурой", при этом не желает или не может оценить степень необходимой пользователю гибкости.
В итоге получается некий велосипед, который для программиста уже не удобен, так как слишком сильно его ограничивает, а для пользователя еще не удобен, так как требует слишком глубокого понимания основ программирования.

Полностью согласен!
Гибкость пользователю не нужна.
Ему нужна только одна кнопка "ЗАШИБИСЬ".
Нажал на нее и "ЗАШИБИСЬ".

<:o)
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38271234
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulvvm"Пользователь" там такого "надизайнит" - мама не горюй.

Ну Access предназначен для конечного пользователя. ;-)
Их (конечных пользователей акцесса) несколько подвидов.
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38271310
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andreymad_nazgulВы только что описали MS SQL Manager ;-)Это вечная проблема фреймворков - каждый разработчик фреймворка пытается сделать некое управление "гибкой структурой", при этом не желает или не может оценить степень необходимой пользователю гибкости.
В итоге получается некий велосипед, который для программиста уже не удобен, так как слишком сильно его ограничивает, а для пользователя еще не удобен, так как требует слишком глубокого понимания основ программирования.
Это даже удивительно как эта идея юзерами управления "гибкой структурой" живуча.
Я наблюдал чела с Пародоком Досовым, типа разработавшего универсальную БД. А все просто. Сделал формы юзерам колонки добавлять, а вообще если что можно в БЛОБы запихал и готово. На вопросы почему бы юзерам не юзать штатные средства для этого - все равно по ходу они теперь типа проектировщики, ниче убидетильного не пояснил. Как юзер буит формировкть сложные сводные отчеты тоже.
Мне только не понятна вера в то, что на западе все такие тупые, что придумали средсва для фреймворков, но не доперли, что можно налабать некое управление "гибкой структурой". Ждали тока наших поделкиных.
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38272308
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvmИх (конечных пользователей акцесса) несколько подвидов.

Ну его презентовали для работы End Usersами. :-)
...
Рейтинг: 0 / 0
Хранение данных с гибкой структурой и запросы к ним
    #38272697
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulvvmИх (конечных пользователей акцесса) несколько подвидов.

Ну его презентовали для работы End Usersами. :-)
Угу, плюс дежурная команда VBA - программистов (на всякий случай).
...
Рейтинг: 0 / 0
25 сообщений из 257, страница 2 из 11
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Хранение данных с гибкой структурой и запросы к ним
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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