Size: a a a

2021 January 25

D

Dmitry in symfony
это нужно базу иметь которая умеет работать с json внутри поля
не все так умеют
источник

SP

Sergey Protko in symfony
Dmitry
это нужно базу иметь которая умеет работать с json внутри поля
не все так умеют
Даже sqlite умеет на примитивном уровне. А у тебя мускуль?
источник

В

Вадим in symfony
Dmitry
не очень мне нравится такая идея хранить настройки
eav для настроек тоже так себе идея )
источник

SP

Sergey Protko in symfony
Или ты делаешь фреймворк и "надо много баз супортить"?
источник

ВМ

Виктор Монастырев... in symfony
Sergey Protko
Даже sqlite умеет на примитивном уровне. А у тебя мускуль?
Ну вдруг у него мускуль старой версии... Я даже и не помню с какой json появился, вроде с 5.4
источник

SP

Sergey Protko in symfony
Dmitry
не очень мне нравится такая идея хранить настройки
Ну тоесть обычно могут бояться jsonb ибо "нет схемы и непонятно как работать" но в eav ровно тоже
источник

D

Dmitry in symfony
не то чтобы фреймворк, но "много баз саппортить" присутствует
источник

SP

Sergey Protko in symfony
Dmitry
не то чтобы фреймворк, но "много баз саппортить" присутствует
Короч для хранения json можно хоть в text хранить. База в этом смысле не важна. Для выборок можно организовать проекции. Тут вопрос что это за настройки такие
источник

D

Dmitry in symfony
я рассматриваю разные варианты хранения настроек, пока собираю информцию по EAV - это еще не окончательное решение
источник

D

Dmitry in symfony
настройки пользовательские из 3d-party сервисов, там может быть что угодно, по сути
источник

D

Dmitry in symfony
Sergey Protko
Короч для хранения json можно хоть в text хранить. База в этом смысле не важна. Для выборок можно организовать проекции. Тут вопрос что это за настройки такие
согласен, только если хранить в тексте, то напрямую в базе уже ничего не отфилььтровать, только на уровне приложения, что тоже минус
источник

SP

Sergey Protko in symfony
У меня для этого есть тупой key-value сторадж поверх базы где настройки через symfony/serializer хэндлятся (+ аудит). Хранится все в одной табличке (ключ, версия, значение, метаданные). И все отлично. Если мне вдруг понадобится фильтрация скорее всего буду держать отдельную табличку которая будет обновляться по успешному изменению значения.

С eav проблемы с выборками и индексами ровно те же
источник

D

Dmitry in symfony
Sergey Protko
У меня для этого есть тупой key-value сторадж поверх базы где настройки через symfony/serializer хэндлятся (+ аудит). Хранится все в одной табличке (ключ, версия, значение, метаданные). И все отлично. Если мне вдруг понадобится фильтрация скорее всего буду держать отдельную табличку которая будет обновляться по успешному изменению значения.

С eav проблемы с выборками и индексами ровно те же
т.е грубо говоря у вас там
SymfonySerializer->toJson|fromJson ? и все это дело хранится в тексте в базе ?
а в сущности или куда там надо подгружаете через отдельный тип под доктрину ?(если говорить в терминах доктрины, может у вас что другое там)
источник

D

Dmitry in symfony
и что значит + аудит ?
в том плане что налету сверяетесь со схемой настроек ? или отдельной командой раз в Н минут проходите по данным и смотрите все ли ок ?
источник

SP

Sergey Protko in symfony
Dmitry
т.е грубо говоря у вас там
SymfonySerializer->toJson|fromJson ? и все это дело хранится в тексте в базе ?
а в сущности или куда там надо подгружаете через отдельный тип под доктрину ?(если говорить в терминах доктрины, может у вас что другое там)
вот тут важно оговорить что такое "настройки".

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

D

Dmitry in symfony
ну вот типа да, можно сделать отдельную сущность вида UserSettings - пока не принципиально
над этим еще не думалось
источник

SP

Sergey Protko in symfony
Dmitry
и что значит + аудит ?
в том плане что налету сверяетесь со схемой настроек ? или отдельной командой раз в Н минут проходите по данным и смотрите все ли ок ?
аудит это кто когда и что менял. То есть дергаешь ты $settings->save($mySettings, 'some-key') и оно внутри грузит текущую ревизию, проверяет поменялось ли чего, если поменялось - можно создать новую ревизию и записать в базу. Если кто-то успел до тебя записать зафэйлится из-за конфликта по версии. Ну и в базе все ревизии для всех ключей + кто и когда их делал
источник

SP

Sergey Protko in symfony
Dmitry
ну вот типа да, можно сделать отдельную сущность вида UserSettings - пока не принципиально
над этим еще не думалось
ну вот я от этого ухожу потому что UserSettings это просто свалка, мне проще хранить отдельные по смыслу настройки по ключу userId
источник

SP

Sergey Protko in symfony
у меня сегодня таблички типа user_settings в себе содержат под сотню колонок
источник

D

Dmitry in symfony
Sergey Protko
ну вот я от этого ухожу потому что UserSettings это просто свалка, мне проще хранить отдельные по смыслу настройки по ключу userId
ага, когда эти настройки можно стандартизировать, тогда проще даже расширить хранилище до 100500 колонок
источник