|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
_мод.... Если нет, то делайте сами. В основе ессно EAV. Особенно должна вдохновлять идея "делать самим" с учетом: [Максим Н]Про EAV согласен, но в моем случае мало подходит. [/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2013, 11:44 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
Максим Нeny, Большое спасибо за советы, учту. Но ИМХО Вашу критику предложенного метода на хабре (кстати только одного из них, и от которого я в конце концов отказался уже) Вы ни чем не обосновали (был бы очень благодарен за это). И альтернативных вариантов предложено тоже не было (так же был бы весьма благодарен), кроме того как почитать "классику". авторВместо того, чтобы написать нормальный фреймворк экранирующий SQL Server А вот здесь можно поподробнее? статья на хабре вообще ни о чем, чего-то там у пацана с базами не срослось и начались сопли пузырями По факту я сам фреймворк написал, и еще с три-четыре всяких реализаций видел, где все можно поменять и храниться все в реляционных базах При небольшом умении программировать хранимки и проектировать структуру БД, все можно сделать настраиваемым. вплоть до динамической генерации create table/alter table/drop table как пример открытого есть vtiger CRM - вроде открытый исходник на php и my sql - дешево и сердито ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2013, 12:15 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
enyПо факту я сам фреймворк написал, и еще с три-четыре всяких реализаций видел, где все можно поменять и храниться все в реляционных базах Вы сейчас о EAV говорите? enyПри небольшом умении программировать хранимки и проектировать структуру БД, все можно сделать настраиваемым. вплоть до динамической генерации create table/alter table/drop table Или о физическом создании отдельной таблицы для каждой пользовательской сущности? Ведь в многопользовательской среде с этим проблемы могут быть, да и вообще create(drop) table это дорогая операция (в зависимости от СУБД конечно) и дергать ее при каждом пользовательском чихе (очобенно если их будет больше одного) не очень прильщает. Поправьте если не прав. enyкак пример открытого есть vtiger CRM - вроде открытый исходник на php и my sql - дешево и сердито Спасибо, посмотрю. ПС Я о том, что проблема достаточно распространенная (тот же самый каталог товаров избитый например), а вот универсальных готовых решений не очень много. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2013, 12:44 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
Максим Н, Ну что значит "дорогая операция"? Рядовой пользователь создавать/удалять сущности(таблички)/атрибуты(поля) не должен иметь прав. Только специальный. Сделай систему со словарем: чтобы было описание сущностей, их полей, и связей между сущностями. А сами сущности реализуй в физических табличках. Система будет иметь и словарь данных, и не будет иметь eav - проблем с производительностью. Процесс модификации таких пользовательских метаданных можно вынести в особую сессию: "Всем выйти из моей программы!". Набрать в процессе редактирования таких "метаданных" пакет изменений, потом проверить, что ты единственный, кто подконнектился, и выполнить итоговый модифицирующий скрипт. Можно отконнекчивать прочих пользователей административными методами, а можно специальное сообщение рассылать. Варианты есть, реализовать несложно. Так часто делают. Не для всех СУБД получится "в лоб": к примеру, в MS SQL нехилое ограничение на суммарный размер записи и т.д. В любом случае, обходные пути есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2013, 02:00 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
vvmв MS SQL нехилое ограничение на суммарный размер записи и т.д. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2013, 09:41 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
Максим НВедь в многопользовательской среде с этим проблемы могут быть, да и вообще create(drop) table это дорогая операция (в зависимости от СУБД конечно) и дергать ее при каждом пользовательском чихе (очобенно если их будет больше одного) не очень прильщает.Все в этом мире относительно. Если каждый объект сам по себе и имеет свою неповторимую структуру, то создавать таблицу по каждому чиху - смысла нет. Но правда и какой-либо словарь в этом случае мало поможет. Если же объекты допускают словарное описание, то есть нормально классифицируются в некоторое количество типов, то создание таблицы на каждый тип вполне возможно и никакой убийственной нагрузки не создаст. Число возможных типов и их атрибутов, очень легко оценить, и сомневаюсь, что в процессе эксплуатации модификация словаря будт происходить чаще раза в день. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2013, 09:54 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
pkarklinvvmв MS SQL нехилое ограничение на суммарный размер записи и т.д. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Код: plaintext 1. 2. 3. 4. 5.
Ну вот и ладушки: считай, что "в мс скл сервер ограничений на суммарный размер записи нет" ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2013, 17:13 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
ИМХО, тема должна быть в разделе "пректирование", а не "сравнение". ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2013, 17:16 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
Максим Н, авторНе хотелось бы устраивать очередную EAV'шную баталию... Инфы много, мне нравится например эта статья - https://www.simple-talk.com/opinion/opinion-pieces/bad-carma/ EAV можно реализовать по-разному. Вы ссылаетесь на вырожденный случай, когда и данные, и метаданные, и сущности, и атрибуты (columns) лежали в одной таблице Data. Есть вариант EAV на три таблицы, есть на пять таблиц и более. Например, набор табличек: - типы сущностей - сущности - типы связей сущностей - связи сущностей - типы атрибутов - шаблоны (список атрибутов для типа сущности) - таблица значений. При таком наборе таблиц в несколько раз меньше джойнов потребуется, особенно, если в таблицу сущностей включить базовый набор атрибутов (название и пр.). Здесь на форуме упоминалось успешное применение EAV-систем. В Вашем случае авторпользователь с помощью графического интерфейса добавляет информацию о любых предметах (сущностях) (дом(номер дома количество квартир...), автомобиль (масса, макс. скорость, цена...), стиральная машинка (объем, энергопотребление, цвет...)), а затем может работать с этими сущностями: — добавлять-редактировать экземпляры (записи, данные); — создавать связи между сущностями (при удалении информации о доме, удяляется вся информация о стиралках, установленных в нем); — составлять запросы к этим сущностям, например: «найти все зеленые стиральные машины в квартирах домов с четными номерами на 5-м этаже» (с помощью QBE, либо, в особых случаях, с помощью встроенного языка запросов СУБД). не похоже, что речь идет о гигабайтах данных, поэтому согласен с _мод: авторЭто не СУБД, а фраймворк. Попросите, м.б. кто-то и поделится. Если нет, то делайте сами. В основе ессно EAV. СУБД любая. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2013, 16:49 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
Animotron - ещё один взгляд на альтернативную жизнь (плюс здесь и здесь ). Модератор: как-то на скрытую рекламу смахивает, если не будет пояснений - пост сотру ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 20:27 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
Модераторкак-то на скрытую рекламу смахивает, если не будет пояснений - пост сотру Лично я к этому проекту не имею никакого отношения. Вот чего желает ТС: Максим ННеобходима СУБД, удовлетворящая следующим требованиям (вкратце): пользователь с помощью графического интерфейса добавляет информацию о любых предметах (сущностях) (дом(номер дома количество квартир...), автомобиль (масса, макс. скорость, цена...), стиральная машинка (объем, энергопотребление, цвет...)), а затем может работать с этими сущностями: — добавлять-редактировать экземпляры (записи, данные); — создавать связи между сущностями (при удалении информации о доме, удяляется вся информация о стиралках, установленных в нем); — составлять запросы к этим сущностям, например: «найти все зеленые стиральные машины в квартирах домов с четными номерами на 5-м этаже» (с помощью QBE, либо, в особых случаях, с помощью встроенного языка запросов СУБД). Т.е. что то наподобие Акссесса, но более легкое и простое. Т.е. физическое создание реляционных таблиц для каждой пользовательской сущности не самый лучший вариант. Планируется WEB-интерфейс. ... Но недавно в очередной раз наткнулся на Neo4j и подумываю, чтобы заюзать ее. Подскажите, может ли она подойти к подобной задаче? Какие есть другие варианты? Именно всё это и имеется в этом проекте, в т.ч. как раз поверх Neo4j. Причём это не только некая альтернатива решениям на основе реляционных баз (включая и для EAV), но и, в целом, другой взгляд на разработку информационных систем (отчасти Акссессо-подобный). Я не в курсе, насколько продукт пригоден для использования (думаю, что не очень), но проект интересен, прежде всего, концептуально. Особенно привлекательны способы обработки данных, что можно взять себе на вооружение, причём не только в рамках какой-то NoSQL. Весьма рекомендую ознакомиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2013, 15:06 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
PSV100Модераторкак-то на скрытую рекламу смахивает, если не будет пояснений - пост сотру Лично я к этому проекту не имею никакого отношения. Вот чего желает ТС: Максим ННеобходима СУБД, удовлетворящая следующим требованиям (вкратце): пользователь с помощью графического интерфейса добавляет информацию о любых предметах (сущностях) (дом(номер дома количество квартир...), автомобиль (масса, макс. скорость, цена...), стиральная машинка (объем, энергопотребление, цвет...)), а затем может работать с этими сущностями: — добавлять-редактировать экземпляры (записи, данные); — создавать связи между сущностями (при удалении информации о доме, удяляется вся информация о стиралках, установленных в нем); — составлять запросы к этим сущностям, например: «найти все зеленые стиральные машины в квартирах домов с четными номерами на 5-м этаже» (с помощью QBE, либо, в особых случаях, с помощью встроенного языка запросов СУБД). Т.е. что то наподобие Акссесса, но более легкое и простое. Т.е. физическое создание реляционных таблиц для каждой пользовательской сущности не самый лучший вариант. Планируется WEB-интерфейс. ... Но недавно в очередной раз наткнулся на Neo4j и подумываю, чтобы заюзать ее. Подскажите, может ли она подойти к подобной задаче? Какие есть другие варианты? Именно всё это и имеется в этом проекте, в т.ч. как раз поверх Neo4j. Причём это не только некая альтернатива решениям на основе реляционных баз (включая и для EAV), но и, в целом, другой взгляд на разработку информационных систем (отчасти Акссессо-подобный). Я не в курсе, насколько продукт пригоден для использования (думаю, что не очень), но проект интересен, прежде всего, концептуально. Особенно привлекательны способы обработки данных, что можно взять себе на вооружение, причём не только в рамках какой-то NoSQL. Весьма рекомендую ознакомиться. Спасибо, именно эти статьи и привели меня к мысле попробовать заюзать графовую базу для таких дел. К сам ому Animotron'у я еще не готов, а вот Neo4j, почему бы и нет. Зафигачить EAV и радоваться жизни это не проблема, только вот как то надоело, интересно решить данную задачу подругому, с использованием более подходящих для этого инструментов (или выяснить для себя, что это не так), поэкспериментировать (тем более текущий проект позволяет пока). Если кому будет интересно могу отписаться о своей попытке, когда будут результаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2013, 22:14 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
DirksDRМаксим Н, авторНе хотелось бы устраивать очередную EAV'шную баталию... Инфы много, мне нравится например эта статья - https://www.simple-talk.com/opinion/opinion-pieces/bad-carma/ EAV можно реализовать по-разному. Вы ссылаетесь на вырожденный случай, когда и данные, и метаданные, и сущности, и атрибуты (columns) лежали в одной таблице Data. Есть вариант EAV на три таблицы, есть на пять таблиц и более. Например, набор табличек: - типы сущностей - сущности - типы связей сущностей - связи сущностей - типы атрибутов - шаблоны (список атрибутов для типа сущности) - таблица значений. При таком наборе таблиц в несколько раз меньше джойнов потребуется, особенно, если в таблицу сущностей включить базовый набор атрибутов (название и пр.). Здесь на форуме упоминалось успешное применение EAV-систем. В Вашем случае авторпользователь с помощью графического интерфейса добавляет информацию о любых предметах (сущностях) (дом(номер дома количество квартир...), автомобиль (масса, макс. скорость, цена...), стиральная машинка (объем, энергопотребление, цвет...)), а затем может работать с этими сущностями: — добавлять-редактировать экземпляры (записи, данные); — создавать связи между сущностями (при удалении информации о доме, удяляется вся информация о стиралках, установленных в нем); — составлять запросы к этим сущностям, например: «найти все зеленые стиральные машины в квартирах домов с четными номерами на 5-м этаже» (с помощью QBE, либо, в особых случаях, с помощью встроенного языка запросов СУБД). не похоже, что речь идет о гигабайтах данных, поэтому согласен с _мод: авторЭто не СУБД, а фраймворк. Попросите, м.б. кто-то и поделится. Если нет, то делайте сами. В основе ессно EAV. СУБД любая. Спасибо за рекомендации. Я в принципе знаком с EAV, но почитаю еще, может чего то не понимаю или не правильно использую. А как бы могла быть решена данная задача средствами Cashe ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2013, 22:18 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
Bogdanov AndreyМаксим НВедь в многопользовательской среде с этим проблемы могут быть, да и вообще create(drop) table это дорогая операция (в зависимости от СУБД конечно) и дергать ее при каждом пользовательском чихе (очобенно если их будет больше одного) не очень прильщает.Все в этом мире относительно. Если каждый объект сам по себе и имеет свою неповторимую структуру, то создавать таблицу по каждому чиху - смысла нет. Но правда и какой-либо словарь в этом случае мало поможет. Если же объекты допускают словарное описание, то есть нормально классифицируются в некоторое количество типов, то создание таблицы на каждый тип вполне возможно и никакой убийственной нагрузки не создаст. Число возможных типов и их атрибутов, очень легко оценить, и сомневаюсь, что в процессе эксплуатации модификация словаря будт происходить чаще раза в день. В том то и дело я пока не могу это оценить. Предполагается что то наподобие как в Экселе: т.е. пользователь может создать Лист, на нем разместить таблицу(ы), заполнить тестовыми данными, что то посчитать, а потом удалить (может даже не сохраняя), а может сохранить и работать с ней годами, добавляя данные, формулы, зависимые Листы, графики и всячески усложняя. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2013, 22:23 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
Максим НПредполагается что то наподобие как в Экселе А если нужен Эксель, так и ступай к Экселю. (с) почти НВГ. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2013, 22:25 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovМаксим НПредполагается что то наподобие как в Экселе А если нужен Эксель, так и ступай к Экселю. (с) почти НВГ. 1. Нужны запросы к тому что пользователь "надизайнил", причем как графический построитель, так и возможность написать их ручками 2. Нужен Веб-интерфейс 3. Нужен какой никакой контроль целостности, описание схемы (для построения интерфеса например) 4. Ну так же вопросы производительности, масштабируемости и пр. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2013, 22:31 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
Максим Н1. Нужны запросы к тому что пользователь "надизайнил", причем как графический построитель, так и возможность написать их ручками 2. Нужен Веб-интерфейс 3. Нужен какой никакой контроль целостности, описание схемы (для построения интерфеса например) 4. Ну так же вопросы производительности, масштабируемости и пр. Вы только что описали MS SQL Manager ;-) Попробуйте EMS PostgreSQL Manager. P.S. Для FireBird есть IBExpert - она еще и бесплатная. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 07:06 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
mad_nazgulМаксим Н1. Нужны запросы к тому что пользователь "надизайнил", причем как графический построитель, так и возможность написать их ручками 2. Нужен Веб-интерфейс 3. Нужен какой никакой контроль целостности, описание схемы (для построения интерфеса например) 4. Ну так же вопросы производительности, масштабируемости и пр. Вы только что описали MS SQL Manager ;-) Попробуйте EMS PostgreSQL Manager. P.S. Для FireBird есть IBExpert - она еще и бесплатная. "Пользователь" там такого "надизайнит" - мама не горюй. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 16:08 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
mad_nazgulВы только что описали MS SQL Manager ;-)Это вечная проблема фреймворков - каждый разработчик фреймворка пытается сделать некое управление "гибкой структурой", при этом не желает или не может оценить степень необходимой пользователю гибкости. В итоге получается некий велосипед, который для программиста уже не удобен, так как слишком сильно его ограничивает, а для пользователя еще не удобен, так как требует слишком глубокого понимания основ программирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 17:26 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
vvm"Пользователь" там такого "надизайнит" - мама не горюй. Ну Access предназначен для конечного пользователя. ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 08:41 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
Bogdanov Andreymad_nazgulВы только что описали MS SQL Manager ;-)Это вечная проблема фреймворков - каждый разработчик фреймворка пытается сделать некое управление "гибкой структурой", при этом не желает или не может оценить степень необходимой пользователю гибкости. В итоге получается некий велосипед, который для программиста уже не удобен, так как слишком сильно его ограничивает, а для пользователя еще не удобен, так как требует слишком глубокого понимания основ программирования. Полностью согласен! Гибкость пользователю не нужна. Ему нужна только одна кнопка "ЗАШИБИСЬ". Нажал на нее и "ЗАШИБИСЬ". <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 08:43 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
mad_nazgulvvm"Пользователь" там такого "надизайнит" - мама не горюй. Ну Access предназначен для конечного пользователя. ;-) Их (конечных пользователей акцесса) несколько подвидов. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 08:53 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
Bogdanov Andreymad_nazgulВы только что описали MS SQL Manager ;-)Это вечная проблема фреймворков - каждый разработчик фреймворка пытается сделать некое управление "гибкой структурой", при этом не желает или не может оценить степень необходимой пользователю гибкости. В итоге получается некий велосипед, который для программиста уже не удобен, так как слишком сильно его ограничивает, а для пользователя еще не удобен, так как требует слишком глубокого понимания основ программирования. Это даже удивительно как эта идея юзерами управления "гибкой структурой" живуча. Я наблюдал чела с Пародоком Досовым, типа разработавшего универсальную БД. А все просто. Сделал формы юзерам колонки добавлять, а вообще если что можно в БЛОБы запихал и готово. На вопросы почему бы юзерам не юзать штатные средства для этого - все равно по ходу они теперь типа проектировщики, ниче убидетильного не пояснил. Как юзер буит формировкть сложные сводные отчеты тоже. Мне только не понятна вера в то, что на западе все такие тупые, что придумали средсва для фреймворков, но не доперли, что можно налабать некое управление "гибкой структурой". Ждали тока наших поделкиных. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 09:40 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
vvmИх (конечных пользователей акцесса) несколько подвидов. Ну его презентовали для работы End Usersами. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 15:03 |
|
Хранение данных с гибкой структурой и запросы к ним
|
|||
---|---|---|---|
#18+
mad_nazgulvvmИх (конечных пользователей акцесса) несколько подвидов. Ну его презентовали для работы End Usersами. :-) Угу, плюс дежурная команда VBA - программистов (на всякий случай). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 17:52 |
|
|
start [/forum/topic.php?fid=35&msg=38250680&tid=1552457]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 240ms |
total: | 382ms |
0 / 0 |