yopp
складывать данные от клиента в базу без валидации тоже не очень идея
yopp
использовать для хранения в базе неподходящий тип тоже боком выйдет
yopp
3339 поддерживает даты, без ччммсс
yopp
в вашем языке скорее всего есть нативный парсер
yopp
а, в js 8601 используется. ну, одна борода
Anonymous
да это всё понятно. яж выше написал, случай у меня очень простой - мною в базу будут класться раз в неделю куча данных скопом (вероятнее всего не одномоментно, и придётся заранее контролировать консистентность даты), просто каждый исход имеет свои недостатки. Наиболее лаконичен и достаточен для меня формат YYYYMMDD (а то и yymmdd), наиболее корректен - как iso, наиболее удобен для фронтенда - unix timestamp.
Естественно с каждым вариантом есть плюсы и минусы , и все проблемы решаемы.
yopp
нет, вам не понятно :)
yopp
YYYYMMDD это некоректное представление данных
Anonymous
некорректное для чего?
yopp
для представления даты
Anonymous
чем оно некорректно?
yopp
тем что вы изобретаете свой тип, когда есть подходящий
yopp
это вообще ужасная привычка изобретать своё
Anonymous
для представления даты
хорошо, моя ошибка, скорее даже мне не нужно отображать дату, просто id, который кореллирует с ней и может являться человекопонятным
yopp
человекопонятность является избыточным требованием к идентификаторам
yopp
человекопонятность это проблема представления данных, а не их хранения
Anonymous
не принципиально. ID? ID. Даже даёт некоторую гарантию уникальности на ближайшие 10000 лет 😁
yopp
у вашего id тип не числовой по своей семантике
yopp
если вы хотите дату, используйте дату
yopp
если вы хотите число, используйте число, но не делайте его похожим на дату
yopp
вы совершаете типичную ошибку проектирования
yopp
у вас в есть группы объектов. т.е. у вас уже есть два типа: группа и объект. у группы есть какой-то идентификатор, который отличает одну группу от другой и есть дата.
вы вместо того чтоб добавить полноценный тип «группа», вы пытаетесь наделить какое-то свойство объекта семантикой типа группа, смешивая там отвественности
yopp
то у вас это дата, то у вас это идентификатор
yopp
то человекочитаемто
yopp
90% проектирования это работа с типами данных
Anonymous
yopp
вы смешиваете отвественности
yopp
у вас появляется «уберполе»
yopp
если у вас есть группа, у которой есть какие-то метаданные, то вам необходимо завести отдельный тип Группа
yopp
у которого будет какой-то идентификатор и какие-то поля, описывающие данные
yopp
и в объекте уже хранить ссылку на эту группу
yopp
если вам наличие отдельного типа кажется избыточным, то необходимо отбросить какое-то из требований к полю
yopp
чтоб у него осталась единственная семантика
yopp
идентификатор предполагает тип, потому что он идентифицирует что-то
yopp
дата, это тоже идентификатор, но для даты уже существует тип
yopp
и если вы поле наделите семантикой «дата создания», то вы можете обойтись значением типа «дата»
Anonymous
все мои данные -{ дата, int}. Они либо встроенны массивом в родителя, либо существуют оторвано, просто как множество чисел в конкретную дату, и выборка будет производится по дате. Тут дата и есть определитель группы. Если вынести группу в отдельный тип и указывать на него идентификатором группы, а в группе уже для каждой группы специфицировать дату как дату, то получим хэшмапу data - id, и никакой выгоды кроме лишней сущности. в способе с занулённой по времени датой мы изобретаем конвенцию, что время ддля запроса данных на дату будет нулевым.
yopp
> мы изобретаем конвенцию,
Anonymous
во во, а нахрен надо
yopp
ох
yopp
мне жаль что я бесцельно просрал полчаса
yopp
но вы фигачьте, мне работы больше :)
Nick
Anonymous
yopp
жалко только тех, кто в этом потом будет разбираться
yopp
и стейкхолдеров продукта
yopp
потому что им зарывают собак, раскладывают грабли и делают продукт неподдерживаемым
yopp
а всё потому, что кому-то кажется что округлить дату до начала суток, следуюя семантике данных, идея менее удачная, чем придумать новый тип
Lev
Вообще, конечно не совсем понятно почему это replicaSet прям вот надо ручками запускать и почему нет нормально режима реплики на один инстанс, когда хочется получить просто активную бд
Lev
Это ведь само по себе фича - активная бд
Andrey
чего-то не могу найти в доке типа Date для нативного драйвера ноды
http://mongodb.github.io/node-mongodb-native/3.1/api/
Andrey
как дату в таком случае сохранить не подскажете?
Andrey
правильно ли понимаю что можно js Date использовать?
yopp
yopp
standalone запускается без какой либо дополнительной конфигурации
Lev
Ну init все равно требуется, что в случае с докерами совсем не удобно
yopp
вы пытаетесь засунуть statefull приложение в stateless инфраструктуру и потом удивляетесь почему вам больно :)
yopp
докер не предназначен для statefull приложений
yopp
любая попытка засунуть состояние во внутрь контейнера обречена на нескончаемую боль
yopp
если вам сильно надо «преднастроенный» контейнер, вы можете настроить всё что вам надо, сделать docker commit и использовать полученный имадж чтоб катать «преднастроенный» контейнер
yopp
но только хранить в нём состояние не пытайтесь
Lev
Никто там состояние не хранит, база выводится на диск или отдельный контейнер (или что там у них... volume-container) специально для этого.
Но когда ты разрабатываешь и тебе надо 10-15 докеров развернуть... и потом ползать по ним заставляя их проинициализироваться... это так себе развлекуха.
yopp
yopp
у вас окружение протекает в контейнер
yopp
или вытекает
yopp
и контейнер перестаёт быть контейнером
Lev
какое именно? Мне надо только change set
yopp
«база выводиться на диск или отдельный контейнер» это и есть утечка состояния
Lev
Вы предлагаете не запускать монгу в докере?
yopp
я предалагю осознать ограничение инструмента и выбирать подходы исходя из этих ограничений
yopp
в кубернетесе именно по этой причине есть костыль под названием stateful sets
yopp
я ещё раз подчеркну: докер предназначен для приложений которым не требуется сохранять своё состояние. мы можем сколько угодно раз, где угодно запускать приложение и ему ничего не будет
yopp
если ему что-то будет, то вы перестаёте использовать докер по назначению
yopp
докер можно использовать для деплоя монги, но вам _придётся_ руками её деплоить
yopp
написать свою деплоилку монги даже не пытайтесь
yopp
пока более-менее получилось только в helm (и то не точно)
yopp
зачем вам 15 раз разворачивать?
yopp
если вам для ci или разработки нужен контейнер, то я ещё раз напомню про docker commit
yopp
даелете контейнер с тестовымми данными, репликой и чем вам ещё надо
yopp
и используете этот имадж в compose