Size: a a a

2021 March 16

AN

Alexey Novoselov in pro.elixir
Ecto.Enum автоматом добавляет validate_inclusion, позволяет делать как string так и integer backed enums, но если подключать механизм постгрес-констрейнтов, то только string
источник

A

Andre in pro.elixir
V
естественно, эта экономия сказывается на больших объёмах.
и как бы с одной стороны стартапу не обязательно об этом париться,
а с другой стороны когда объём данных вырастает - обычно задач становится столько что до конвертации string -> enum руки не доходят, и мысль одна на всех "что ж сразу-то не сделали"
Большинство стартапов умрет раньше, чем возникнет проблема экономии. Но на старте создаст проблем больше, чем пользы. О чем и написал @ex_it1
источник

V

V in pro.elixir
про "большинство стартапов умрёт раньше, чем" разве что ленивый дурак не знает
источник

AN

Alexey Novoselov in pro.elixir
да там в принципе экономия на спичках получается во времена порно в 4к)
источник

V

V in pro.elixir
никогда не разворачивал локально таблицу на сотку гигов, состоящую на 3/4 из словарных значений?
источник

AN

Alexey Novoselov in pro.elixir
но вот от опечаток в прямых sql-запросах/миграциях может защитить, да
источник

АО

Алексей Овчинников... in pro.elixir
Alexey Novoselov
да там в принципе экономия на спичках получается во времена порно в 4к)
скорее надо думать не об экономии места, а об экономии ресурсов на создание индекса, если по этому полю будет поиск... Но, согласен - экономии практически тут не ожидается
источник

AN

Alexey Novoselov in pro.elixir
V
никогда не разворачивал локально таблицу на сотку гигов, состоящую на 3/4 из словарных значений?
ну для такой таблицы вопрос решается одной миграцией по преобразованию всех строк в постгрес-энамы
источник

V

V in pro.elixir
Alexey Novoselov
ну для такой таблицы вопрос решается одной миграцией по преобразованию всех строк в постгрес-энамы
да я ж выше написал
"""
когда объём данных вырастает - обычно задач становится столько что до конвертации string -> enum руки не доходят
"""
источник

IA

Ivan Ananev in pro.elixir
Alexey Novoselov
ну для такой таблицы вопрос решается одной миграцией по преобразованию всех строк в постгрес-энамы
решается .. вопрос сколько это будет стоить на прод базе с пару сотен гигов
источник

V

V in pro.elixir
и не надо ля-ля что это делается "в одно действие". если тебе в начале жизни проекта, когда он ещё маленький, сложно работать с enum (ну ты ж по какой-то причине решил не заморачиваться с ним, а взять строки), то в выросшем проекте это будет точно не проще. а значит тут есть скрытые трудозатраты
источник

AN

Alexey Novoselov in pro.elixir
Ivan Ananev
решается .. вопрос сколько это будет стоить на прод базе с пару сотен гигов
примерно столько же, сколько будет стоить удаление значения из одного из энамов в таблице
источник

IA

Ivan Ananev in pro.elixir
Alexey Novoselov
примерно столько же, сколько будет стоить удаление значения из одного из энамов в таблице
так и стрингу ж тоже придется чистить
источник

ML

Maksim Lapshin in pro.elixir
В кликхаусе это очень изящно сделано
источник

P

Pavel in pro.elixir
База на 2/3 из словарей - это что за по такое? У пользователя есть транзакции, изменения состояния, какие-то сущности. Если у вас 2/3 данных это словарь - вытащите это в отдельный сервис, ощущение, что вы битфлаги в енамы завернули и жалуетесь
источник

P

Pavel in pro.elixir
Maksim Lapshin
В кликхаусе это очень изящно сделано
Ну кликхауз вообще много вещей классно делает. Единственная беда это схема все-таки, для аналитических данных это чаще мешает. Приходится делать для больших объемов и изменяемости как бадушники с промежуточной табличкой
источник

V

V in pro.elixir
> вытащите это в отдельный сервис

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

P

Pavel in pro.elixir
V
> вытащите это в отдельный сервис

расшифровка и логика словарных значений находятся в коде. кодированные значения словарей хранятся в базе. мы тут обсуждаем как кодировать и хранить.
А как это противоречит тому, что я написал? Ощущение, что у вас словари настроек или чего похожего, заверните в битфлаги или выведите в отдельный сервис, енам в бд тут совсем не при чем. Он не для экономии а для констрейнтов
источник

P

Pavel in pro.elixir
Вы не хотите, чтобы Васян вам в БД положил невалидные данные и для этого есть енам. Есть сцепифика словарей в приложении - решайте ее. Но не стоит говорить, что решение со строкой-статусом говно, из-за какого-то конкретного случая.
источник

P

Pavel in pro.elixir
Это плохой подход, негодный.
источник