• Как хранить товары с различными опциями в БД?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    В стародавние времена это действительно было проблемой.

    И обычно использовался п.2, который называется EAV, и который в нормальном виде (таблица всех атрибутов, таблица всех значений, и таблица-связка товар-атрибут-значение), хотя и является истинно реляционным решением, служил причиной кровавых слез не одного поколения программистов.

    Эта ситуация послужила одной из причин появления хранилищ для неструктурированных данных, таких как Монго, которые входят в очень широкую категорию NoSQL.
    Но сами по себе "документо-ориентированные базы данных" в качестве основного хранилища - это ад и проклятие, хуже EAV. Если EAV делает адом только работу с атрибутами товаров, то Монга делает проклятием работу со всей БД целиком. Забудьте об этой идее.

    Тем более что в последние годы появилось вполне достойное решение: во всех классических СУБД появилась поддержка JSON полей.
    То есть таблица товаров будет самая обычная, в которой есть общие поля типа цены, названия и прочее. А свойства хранятся в JSON поле. Беря, таким образом, лучшее из двух миров.

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

    Главное при этом хранить (либо в коде, либо в таблице категорий) эталонные структуры таких json полей, которые, во-первых, использовать как справочники для заполнения товаров (тупо чтобы помнить, что частота процессора называется freq, а не frequency), и чтобы собственно делать фасетные фильтры.
    Ответ написан
    5 комментариев
  • Как посмотреть граф всех родителей данной ветки?

    Lynn
    @Lynn
    nginx, js, css
    Думаю, что надо ещё раз прочитать что такое ветки и коммиты в git.

    Никакого отношения между ветками в git нет. Ветка это просто указатель на коммит. У каждого коммита есть родитель(-и) и всё.

    Т.е. не «из ветки main создаем feature1», а «создаём новый указатель на коммит на который сейчас указывает ветка main (или чаще просто на текущий коммит) и называем его feature1». Всё. feature1 ничего не знает ни о какой ветке main, поэтому вопрос о родителе ветки бессмысленен.
    Ответ написан
    2 комментария
  • Лучшая книга для начального изучения алгоритмов?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Лафоре из перечисленных самый простой и дружелюбный.
    Ответ написан
    Комментировать
  • Как стать Solution Architect?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Архитекторы нередко вырастают из системных аналитиков - это правда, но архитектура решения обычно требует очень глубокого понимания технической составляющей продукта. Если хочется расти в архитекторы, то лучше смотреть в сторону архитектуры предприятия.
    Ответ написан
    Комментировать
  • Где создать общую асбтрактную модель в Django?

    nnnLik
    @nnnLik
    Capybara god
    Можно создать приложение common и там создавать общие модели ну и всякая разное.
    Ответ написан
    Комментировать
  • На сколько производительна связка react + django через axios и rest по сравнению с другими связками?

    vabka
    @vabka
    Токсичный шарпист
    Вы пытаетесь сравнить тёплое с мягким.

    rest - архитектурный подход.
    Axios - библиотека для отправки http запросов.
    Babel - транспайлер.
    Webpack - сборщик/бандлер.

    Каким боком тут сервер и питон я не понял, тк всё перечисленное работает в браузере.
    Ответ написан
    5 комментариев
  • Как начать учить программированию детей начальной школы?

    Зачем детям в начальной школе программирование? Оставьте их в покое, не издевайтесь. Лучше математике их научите или физике с химией. Опыты покажите, эксперименты. Зачем им голову забивать всякой ерундой?
    Ответ написан
    1 комментарий
  • Как попробовать IT-профессию и понять для тебя ли?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    ИТ прекрасны ещë тем, что для входа достаточно уметь читать, иметь компьютер и упорство. Попробовать многое можно прямо дома.
    Ответ написан
    6 комментариев
  • Как хранить товары с различными опциями в БД?

    @Dmtm
    Android
    классическое решение:
    таблица товаров, таблица опций, таблица связей товар-опция
    NoSQL не нужен
    Ответ написан
    6 комментариев
  • Как откатить версию конфигурации 1с на предыдущую?

    @ibystrof
    На будущее: Если планируете грандиозное обновление, то необходимо всегда делать бэкап. Это золотое правило любого уважающего себя разработчика. Не стоит пренебрегать бэкапом. Это может спасти ваши нервы и время.
    Теперь рассмотрим ситуацию, когда восстановить из бэкапа невозможно, но есть конфигурационный файл.
    Принцип такой: через интерфейс : сравнить/объединить удаляешь новое, восстанавливаешь старое. По веткам иеархии метаданных переходишь и выбираешь, что удалить, а что оставить.
    Вариант, когда нету конфигурационного файла и нет бэкапа. Через отладку комментируйте строки, где появляется ошибка.
    Вариант, когда есть конфиг. файл, нету бэкапа и нет возможности его использовать, либо не получается:
    Отдать специалисту вопрос.
    Надеюсь понятно расписал.
    Ответ написан
    1 комментарий
  • Хорошая ли стратегия разбивать монолит джанго на микросервисы джанго?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Смотри. Уже прошло время когда все пилили монолиты на микросервисы. Щас пошло переосмысление.
    Объективно есть 2 причины пилить. Первое - организационная. Команда по какой-то причине не хочет
    или не может поддерживать приложение. Или там что-то с бизнесом. Слияние. Поглощение. Передача
    проекта другой команде в поддержку. Тогда берут и ставят задачу раздела отвественностей.
    Конвей про это писал еще.

    И второе - это баланс нагрузки и децентрализация. Про failover тут еще даже речи нет. Это
    тяжелая тема и распилить монолит так чтобы его части были отказоустойчивы очень трудно. Более
    того в случае синхронных взаимодействий между частями микросервисов может быть даже падение
    перформанса
    . Да. Теоретики которые там пишут восторженные отзывы - совершенно игнорируют
    накладные на RPC. И не упоминают что в монолите цена RPC была равна нулю. Иногда RPC заменяют
    на MQ - но это новая архитектура и это надо полностью переделывать бизнес.

    И что делать с базой данных? Это тот еще вопрос. Я почти готов спорить что вы базу пилить не будете.
    И что в результате будет? Иммитация микро-сервисов? Где слабая связность?

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

    Но имеет смысл сделать модуляризацию монолита. Например что там...
    application
    - sales
    - hiring
    - userprofiles

    Тоже очень полезно для управления сложностью. И пускай себе будет монолит зато будет сильный
    контроль за изменениями.
    Ответ написан
    6 комментариев
  • Какую базу данных использовать для такого проекта?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут подходит любая реляционная SQL БД потому что нет противопоказаний. Реляционку мы выбираем
    уже более 30 лет как default вариант и почти не ошибаемся.

    Когда задача имеет признаки ярко выраженной high-load системы - мы делаем ей частичную денормализацию
    и раскладываем ее в NoSQL Key-Value решение. Но это не про улучшение а это про неизбежность. У нас нет выхода просто.
    Иначе мы клиенту не сможем быстро отдать какой-то резуальтат.

    Когда задача имеет ярко выраженную документную природу (нет спецификации на values) - мы берем MongoDb/CouchDb.

    Когда задача хранит граф и ищет в графе и вообще требует графовых алгоритмов - то мы берем Neo4j или ей подобные.

    Когда задача хранит данные измерений (телеметрия) - то предпочтительно взять InfluxDb или ей подобные. Здесь-же мы предполагаем что у нас - не будет joins а будет только измерения в диапазоне времени.

    Но в данном ТЗ и на картинке обычная SQL БД (MySQL/Postgres) вполне себе нормально справляется.
    Ответ написан
    Комментировать
  • В каком направлении развиваться SQL разработчику?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Не существует понятия sql-разработчик. Есть определение DBA для тех, кто знает не только SQL в деталях, но и нюансы работы конкретной СУБД, а также способы улучшения производительности.
    Ответ написан
    4 комментария
  • Где можно увидеть идентификатор?

    @Dementor
    программист, архитектор, аналитик
    Это внутренние идентификаторы ссылок. Единожды созданная номенклатура (и не только - все справочники) всегда имеют неизменный УУИД.

    >>Подскажите где в 1с его можно увидеть?
    Доступны через вызов функции в языке программирования. Если вы не программист, то самый простой способ - запустить Инструменты Разработчика и там открыть динамический список нужного справочника. В меню будет иконка с синим ID - это включение колонки со значениями этого идентификатора для элементов.
    Ответ написан
    Комментировать
  • Стоит ли мне поработать php-разработчиком, а потом набравшись опыта перейти на java?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Да, но не на джунской вакансии.

    Сам по себе современный пых как раз очень сильно покусан явой.
    И если писать на пхп, используя современные подходы в ООП, то при переходе на яву увидишь очень много общего. Собственно, пхпшники всю жизнь учили паттерны проектирования по книжкам для Явы.

    Но сдается мне, что под "вакансиями пхп в моем городе" подразумеваются исключительно битрикс и вордпресс. Которые не то что ничего не прибавят к опыту, а наоборот, дадут только жирный минус.

    Но сначала надо научиться формулировать вопросы. Без этого умения ни в пхп ни в яве толку не будет
    Ответ написан
    3 комментария
  • Эффективны ли roadmapы в обучении?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Каждый пункт roadmap'а надо понимать, а не помнить наизусть. Если вы действительно разобрались с сокетами, то понимание никуда уже не денется.
    Ответ написан
    Комментировать
  • В урлах приложения заявлено больше вью, чем есть в файле вью приложения. Как это может работать?

    milssky
    @milssky
    Координатор племени фиолетовых обезьянок
    Работать это будет примерно никак. Код похож на заготовку для какого-то урока по написанию апишки из джанги.
    Ответ написан
    4 комментария
  • Есть ли в РФ учебные заведения, которые выпускают сеньоров или мидлов?

    Acceptme3
    @Acceptme3
    Джун, мидл сеньор это, я бы сказал градация опыта. Поэтому нет. Высшее образование в сфере IT лишь даст вам преимущество в поиске работы.
    Ответ написан
    2 комментария
  • Как в python правильно взаимодействовать с БД?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Правильный способ - это пул соединений с БД и приложение соответствующее 12 факторам. Используемый вами подход не масштабируется и крайне ненадëжен.
    Ответ написан
    Комментировать