• Как выбрать базу данных для проекта?

    @alexalexes
    1. Если в разрабатываемой системе нет потребности производить нечеткий поиск, получать сверхбыстрый ответ на запрос в реальном времени (не более пары миллисекунд), производить аналитику данных в самых разных разрезах. У вас в потоках данных определены сущности с четкими реквизитами и сущности имеют высокую связность, то в 99% случаях вы даже не повернете голову в сторону нереляционных СУБД, будете использовать реляционные.
    2. На самом деле, просто зависит от того, как сложно администрировать СУБД в том масштабе, в которой развилась база данных. Сначала берут первую попавшуюся, или с тем, с чем освоились более-менее, а потом смотрят с течением времени, как сложно нанять нужного специалиста на администрирование, удобно ли масштабировать экземпляры баз данных при возросшей нагрузке, удобно подымать экземпляры из небытия, держать непрерывный аптайм. Вот тут уже выясняется специфика работы предметной области и необходимость переезжать на подходящее окружение.
    Ответ написан
    1 комментарий
  • Как выбрать базу данных для проекта?

    vabka
    @vabka
    Токсичный шарпист
    Если не знаешь, почему тебе нужна нереляционная - бери реляционную, тк наиболее гибкое и какие-то возможные проблемы будет легче всего обойти.

    Какую конкретно? Ту, которую лучше знаешь, если не можешь назвать конкретную причину, почему лучше изучить другую и взять другую. Например вот я беру postgres по-умолчанию, но вот у меня проект, который требует минимального жора ресурсов и наиболее простой инфраструктуры - тогда беру sqlite.
    Или наоборот - я понимаю, что у меня какие-то специфичные требования по консистентности и доступности, система у меня будет распределённая, а запросы у меня будут исключительно key-value, да и желательно ещё иметь возможность подписки на изменения каких-то ключей - тогда беру etcd.
    Ответ написан
    Комментировать
  • Какие архитектурные решения можно применить?

    myks92
    @myks92 Куратор тега PHP
    Нашёл решение — пометь вопрос ответом!
    1. Нет деления по слоям из DDD. Нужно отделять бизнес логику от инфраструктуры. Ответственно контроллерах минимум кода и никакой логики.
    2. Анемичные сущности, которые не имеют контроля над своим состоянием агрегата.
    3. Сущности знают про то где они хранятся. Если завтра мы начнем хранить данные в другом месте, то ваш код придётся переписывать.
    4. Про структурные паттерны можете почитать тут: https://refactoring.guru/ru/design-patterns/struct.... Там есть примеры на PHP.

    В целом могу сказать, что код пишется для человека, а не для машины. Поэтому не нужно бездумно писать код и раскидывать всё в разные папки по всему проекту. Выделяйте модули и ложите всё рядом с ним. Можете почитать про модульный монолит.

    Например, у вас Request размазан по разным папкам: Events, Models, Listeners и т д. Вам завтра скажут вынести модуль заявок в отдельный сервис или вообще его удалить. Вместо того чтобы удалить одну папку, то вам нужно во всех папках найти где есть Request. Конечно, это не удобно. Не говоря о том, то вся логика, в том числе и бизнес логика хранится по всему проекту. И это у вас простой код. А что если будет 100 разных модулей. С вашей структурой вы точно увязните. Плюс у вас будет куча конфликтов при разработке. Нельзя за каждым программистом закрепить папку, за которую он отвечает. Каждому программисту придётся лезть в соседнюю попку, потому что они общие. Ревью делать тоже сложно.
    Ответ написан
    2 комментария
  • Select зависящий от select, не могу понять как улучшить?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Ну ведь очевиден же ответ.
    Сейчас ваш код срабатывает по событию - это следует и из самого кода и из наблюдаемого поведения.
    Вам нужно, чтобы он срабатывал и при загрузке страницы тоже.
    Вынесите логику в отдельную именованную функцию и вызовите её руками дополнительно. Ну или просто автоматически триггерите событие на нужном элементе.
    Ответ написан
    2 комментария
  • Как сделать внешний ключ?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Поле id в таблице customers ДОЛЖНО БЫТЬ первичным ключем
    create table customers (
        id serial PRIMARY KEY,
        name text
    );
    
    create table orders (
        id serial PRIMARY KEY,
        customer_id int
    );
    
    alter table orders ADD FOREIGN KEY (customer_id) REFERENCES customers(id) ;


    https://sqlize.online/sql/psql14/c1677ae3f75eaec21...
    Ответ написан
    3 комментария
  • Как сделать внешний ключ?

    Давайте для начала переведём это на привычные всем названия.
    У вас таблица customers (А) со столбцами id и name, а ещё таблица orders (Б) со столбцами id и customer_id.

    Таблица orders имеет внешнюю (по отношению к ней) связь: orders.customer_id -> customers.id. Таблица customers здесь выступает в качестве основной, поскольку именно она отвечает за то, какие id для orders.customer_id будут валидными, а какие нет. Т.е. "родительская" таблица это та, в которой хранятся "условия проверки" корректности значения в "дочерней".

    В тексте вопроса же у вас, простите, какой-то винегрет из слов.
    но потом подумал что это не правильно, т.к. номер заказа не может быть в родительской таблице
    Вот это, например, вообще не имеет смысла, потому что никакого номера заказа тут и нет.
    Ответ написан
    2 комментария
  • Почему появляется ошибка cors при обращении к keycloak?

    Dasihub
    @Dasihub
    Если у тебя сервер стоит node js, то используй эту библиотеку ссылка
    Ответ написан
    Комментировать
  • Можно ли задавать вопросы об оптимизации и/или улучшение качества базы данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    можно ли в принципе кидать свою БД с просьбой об улучшении или оптимизации ?

    Скорее всего - нет. Подобного рода консультации делают консалтинговые конторы которые продают
    вам либо DBMS либо программный продукт (1С) и прочее.

    Хабр не должен их подменять собой.

    Если вы проектируете новую БД - то вы должны сводить вашу консультацию к 1-2 вопросам.
    Например - почему медленно работает данный запрос (текст SQL прилагается). Сделали
    такие-то такие-то индексы и все равно - медленно. Вот такой вопрос - для хабра.

    Риторические и философские вопросы - обычно производят много шума и флуда и в конечном счете
    все равно не несут никакого ответа.
    Ответ написан
    Комментировать
  • Можно ли задавать вопросы об оптимизации и/или улучшение качества базы данных?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Можно в принципе любые вопросы, связанные с тегом. Вопросы, а не задания (и не опросы!)

    Примеры:

    Опрос: "Как вы думаете, вот эта БД лучше вон той БД или хуже и почему?"
    Задание: "Сделайте мне структуру БД, чтобы вот так, вот растак и вот расэдак"
    Вопрос: "Хочу сделать вот такую структуру чтобы вот так, вот растак и расэдак, сделал то-то и то-то, получил вот такую и такую хрень, ЧЯДНТ?"
    Ответ написан
  • Возможно ли найти неоплачиваемую стажировку?

    plustilino
    @plustilino
    https://younglinux.info
    Я в шоке, что комментаторы тут предлагают за стажировку доплачивать тому, кто будет стажировать, а не тому, кто будет стажироваться. Прям все шаблоны порвали.
    Вроде как стажировщикам тоже платят. А тут человек готов даже бесплатно.

    Удивляет и то, что за столько лет обучения человек так и не попробовал нигде подзаработать. Можно было сделать какой-то сайт, приложение для мобильных устройств и выложить в магазин приложений.
    Ответ написан
    52 комментария
  • Можно ли уточнить о вопросах перед собеседованием?

    Jacen11
    @Jacen11
    можно конечно, только никто не скажет
    смысл же в том чтобы опыт ваш узнать, а не как вы вопросы вызубрите, тут вам не школа универ, тут реальные знания проверять пытаются
    Ответ написан
    Комментировать
  • Можно ли уточнить о вопросах перед собеседованием?

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

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Как всегда прочитайте правила.
    Потом задавайте в формате Я сделал что то, но оно тормозит либо неправильно работает.

    Желателен исходный код, версия субд.

    Хотя можно и общие вопросы спрашивать по структуре бд
    Ответ написан
    Комментировать
  • Как найти работу со сложными и комплексными проектами если нету опыта работы в таких проектах?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    У большинства программистов первое рабочее место - это унылая маленькая компания с примитивными технологиями и простыми задачами. Следующая работа немного лучше. Следующая ещё лучше. И так пока не заберëшься на максимально доступную тебе высоту. Потолок и скорость развития у всех разные, зависят в основном от того, на сколько сильно стараешься. Некоторые так никогда и не выбираются из эникейщиков и крутильщиков cms'ок. Немало тех, кто выбирается лет десять.
    Ответ написан
    Комментировать
  • Как настроить поведение кнопки "Назад"?

    YBB
    @YBB
    И так до бесконечности.

    Это потому что используете ссылку на реферрер, т.е. предыдущую страницу. Навигацию "по цепочке назад" дает ссылка <a href="javascript:history.back()">
    Ответ написан
    2 комментария
  • Есть ли такой проект по Вёрстке который ответит на Любой вопрос?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Нет. Они могут только покрывать большинство.
    Больше практики - это отложится в голове и, даже если забудешь как делать то вспомнишь где искать.

    Как сказал Роберт Шекли
    Чтобы правильно задать вопрос, надо знать половину ответа
    Ответ написан
    1 комментарий
  • Не понимаю как правильно ли использую функцию DISTINCT?

    @dronmaxman
    VoIP Administrator
    для mariadb 11
    CREATE TEMPORARY TABLE temp_table AS
    SELECT printer, 
    CONCAT('{', GROUP_CONCAT(QUOTE(materials)), '}') AS materials
    FROM printers 
    GROUP BY printer;
    
    SELECT CONCAT('{"printer":"', printer, '", "materials":', materials, '}') AS json_format 
    FROM temp_table;
    
    DROP TEMPORARY TABLE IF EXISTS temp_table;


    Получилось вот так

    {"printer":"Принтер цвет", "materials":{'A4','A4color','610*175m','610*50m','914*175m','914*50m','A3','A3color'}}            
    {"printer":"Принтер ч/б", "materials":{'A3','A4'}}                                                                           
    {"printer":"Принтер ч/б и цвет", "materials":{'610*175m','610*175m','914*175m','914*50m'}}
    Ответ написан
    1 комментарий
  • Где посмотреть и поучиться правильной постройки баз данных?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    ну, с SQL все просто
    http://sql-tutorial.ru/ru/content.html
    https://www.sql-ex.ru/?Lang=0

    читаешь, проходишь до конца задачник и - тебе открываются миры, можешь вертеть данными как хочешь

    с NoSQL же нужна сооовсем не книга, нужно
    • владение нагрузочными инструментами
    • прочитанная книжка "Семь баз данных за семь недель"
    • общее понимание структур данных и их обработки в твоем языке

    это чтобы повесить шильдик, что ты NoSQL владеешь,
    но(!) можно сделать по-хипстерски: ты владеешь только JSON/Маршалинг/анмаршалинг , а все проблемы производительности - проблемы DevOPsа - так сильно проще, так многие живут и все при деле ))
    Ответ написан
    3 комментария
  • Не понимаю как правильно ли использую функцию DISTINCT?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вы неправильно понимаете работу с базой данных. Результат запроса - таблица, в которой каждое поле каждой строки заполнено данными или NULL. Как вы себе представляете желаемую таблицу?
    JSON у вас тоже неправильный. В объекте не может быть нескольких свойств с одним именем.
    Сделать JSON из таблицы можно. Например, в MySQL для этого используются функции JSON_ARRAYAGG и JSON_OBJECTAGG в сочетании с GROUP BY.
    Ответ написан
    3 комментария
  • Есть ли какие-либо курсы по повышению квалификации для Backend разработчика (Node.js)?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Лучший курс повышения квалификации - решение реальных задач. Особенно более сложных, чем предыдущие. Все остальное - мусор и инфоцыганство в основной массе. Все нужные знания лежат в сети в открытом доступе - надо просто научиться их искать и применять в реальном деле.
    Ответ написан
    3 комментария