• Правильно ли я выбрал структуру базы данных, создав 2500 одинаковых таблиц?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Andrew_Novikov,

    Пользователь выбирает имя спортсмена, например "Petr_Yan", дальше идет запрос к БД "select * from Petr_Yan",

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

    Над таблицами думают. Их рисуют на архитектурных диаграммах. Ты чисто случайно словил
    дефект в различиях файловых систем Linux/Windows и мы пришли вообще к тому что ты
    сделал невернй дизайн БД.

    После того как переделаешь - проблема сама собой уйдет. А когда будешь придумывать
    имена таблиц - делай все в одном регистре. Так - проще жить. Меньше в будущем
    будет архитектурных косяков.
    Ответ написан
    6 комментариев
  • Почему скрипт выдает разные результаты?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Прежде, чем искать ошибку в коде, вам надо аналитически доказать, что вводимая вами операция обладает нужными свойствами. Нужные инструменты - бумага, карандаш, резинка, голова.
    Ответ написан
    2 комментария
  • Как вычислить разрешение экрана?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    x * y = 4608000
    x2 + y2 = [6.73 * 522]2 = 12341169

    y = 4608000 / x
    x2 + 46080002 / x2 = 12341169

    x4 - 12341169 * x2 + 21233664000000 = 0
    D = 123411692 - 4 * 21233664000000 = 67369796286561
    x2 = (12341169 + sqrt(D)) / 2 = 10274539
    x = 3205.392, y = 1437.578

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно поднимают балансировщик и делают так что сначала все ходят на 1.1.1.1.
    Потом делают перевод новых сессий в новое место в пропорции 20:80.
    И так далее пока все сессии не переползут.
    Ответ написан
    4 комментария
  • MySQL if else как правильно?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SET `datetime` = GREATEST(`datetime`, NOW()) + INTERVAL 10 DAY
      WHERE ...
    Естественно, поле должно быть стандартного типа DATE или DATETIME.
    Ответ написан
    3 комментария
  • Есть ли способы включить компьютер по wake on lan через nat?

    @alexalexes
    Может есть "старый, советский, есть в каждом доме" способ чтобы обойти без покупки белого ip?

    Вам понадобится "старый, советский, есть в каждом доме" комп, который остался после предыдущего апгрейда и не оказался в комиссионке. В старом компе должен остаться CD/DVD привод. Подставьте лоток привода так, чтобы он находился напротив кнопки включения вашего нового компа. Настройте профиль удаленного подключения на старом компе в AnyDesk или TeamViewer, так, чтобы автономно можно было подключаться к нему из любого другого устройства.
    Чтобы включить новый комп, вам нужно удаленно зайти на работающий в сети старый комп и программно на иконке дисковода активировать команду открыть или закрыть дисковод, тогда новый комп включится.
    PS: такую же операцию можно провести и без дисковода. Из окружения старого компа будет доступна локальная сеть, по которой вы можете отправить любые команды на любые устройства локальной сети.
    Ответ написан
  • Как составить запрос к нескольким таблицам?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Похоже Вам нужен UNION
    select 't1', phone           from t1 where phone = '987654321'
    union all select 't2', phone from t2 where phone = '987654321'
    union all select 't3', phone from t3 where phone = '987654321'


    https://sqlize.online/sql/psql14/ac0b0a66662794d8c...
    Ответ написан
    Комментировать
  • Можно ли использовать несколько сетей?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Угу-угу. Воткнул ты такой usb с чем-то непонятным, сидишь балдеешь, потом поднимаешь глаза - опа, а рядом безопасник стоит :) и без всякой улыбки спрашивает - а что это такое только что воткнули в ноут?

    Если это по работе - лучше напрячь админов. Если не по работе - лучше всего не лезть на корпоративный ноут.
    Ответ написан
    1 комментарий
  • Как работает кластер galera?

    paran0id
    @paran0id
    Умный, но ленивый
    https://galeracluster.com/library/documentation/ov...

    Ну камон, репликация мускуля - это не тайные знания.

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


    Ага, синхронная репликация - запрос считается выполненным, когда данные разлетелись по кластеру. Медленно и надежно. Асинхронная репликация - сначала запрос считается выполненным, потом данные синхронизируются. быстро, но ненадежно.

    А вообще, всех распределенных систем касается CAP-теорема, почитайте. Идеальных распределенных систем не бывает.
    Ответ написан
    1 комментарий
  • Как задать права на редактирование файла без удаления?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    ЕМНИП, офис при сохранении файла создаёт временный, записывает данные в него, удаляет старый, переименовывает временный. Так что, без прав на удаление сохранение работать не будет.
    Ответ написан
    3 комментария
  • Как сделать автозаполнение поля mysql?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    Правильно делить это на две таблицы: продукты и варианты. Но если хочется странного то вуаля:
    insert into products (product_id, name, variant, price) 
    select 
        coalesce (
            min(case when name = 'мышь' then product_id end ),
            coalesce(min(product_id), 0) + 1
        ) product_id
        ,'мышь', 'красная', 150 
    from products;


    https://sqlize.online/sql/mysql57/50e7ba1b33d77fa9...
    Ответ написан
    3 комментария
  • Как запретить загрузку с LiveCD?

    @Drno
    никак. есил человек имеет физический доступ до ПК - он найдет способ

    разве что шифровать целиком диск, но это тоже имеет свои "побочные" моменты
    Ответ написан
    2 комментария
  • Как сгрупировать запрос в Laravel?

    Adamos
    @Adamos
    Раз все равно "все, которые остались", значит, это вопрос условия сортировки.
    Условие пока не сформулировано - если статус 1 у пяти статей, которые три из них надо брать?
    Ну, и вымучивая один запрос, неплохо бы проверить, не получится ли он медленнее четырех простых: взять три последних айдишника (индекс, мгновенно), один первый (аналогично), три первых (видимо) по статусу, исключая полученное на предыдущих запросах (а вот с этим в одном запросе подзатрахаешься конкретно) - и окончательный селект, у которого в сортировке указаны эти айдишники как повышающие приоритет.

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

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Из поисковых систем для Full-text search я помню только две. Sphinx, Lucene (на его базе Elastic/Solr). Но насколько они применимы в данном примере - я не знаю. Надо глубже понимать задание. На уровне юз-кейсов.

    Зачем тут графовая БД - непонятно. Приведите пример что вы хотите записывать в граф.
    Ответ написан
    8 комментариев
  • Логика игры "Пятнашки" на Python?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Надо, чтобы "четность" перестановки совпадала с четностью финального поля (1).
    Занумеруйте все 16 позиций слева направо сверху вниз.
    чтобы подсчитать четность, рассматривайте каждую пару заполненных позиций (15\*14/2=105 пар) - если числа идут не в том порядке (большее число на позиции с меньшим номером) - то прибавьте 1 к ответу. В конце возьмите ответ по модулю 2. Это и будет четность перестановки.

    Чтобы получить поле, которое можно собрать, сгенерируйте любую перестановку (случайно перемешайте 15 чисел), а потом посчитайте ee четность. Если четность плохая, то поменйте местами любые 2 соседних элемента (выберите случайно, или меняйте первые 2 всегда - на вероятности всех возможных полей это не влияет).

    Edit: Но вы это почти все итак знатете, ибо функция is_solvable в вашем коде как раз инверсии уже считает.
    Значит, Но вы знаете, что плохое поле от хорошего отличается лишь четностью, значит, если поле плохое - меняйте местами 2 соседних по порядку элемента. Например верхний левый со вторым в верхней строке.
    Ответ написан
    Комментировать
  • Как проверить бекап postgres что он не битый?

    Melkij
    @Melkij
    PostgreSQL DBA
    Проверить бекап - путь только один, это восстановиться с него и посмотреть всё ли на месте. То самое известное, что все администраторы по наличию бекапов делятся на 3 типа: кто не делает бекапы, делает бекапы и тех, кто проверяет восстановление из бекапа.

    прервался ли pg_dump в какой-то момент - смотреть можно, как обычно, по коду возврата, а так же по stderr.

    PS: довольно тревожная мысль не сохранять права доступа
    Ответ написан
    5 комментариев
  • Как оптмизировать INSERT-SELECT SQL запрос?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Как всегда автор не указывает тип dbms. Ох-ох-ох..

    Запрос состоит из двух функционалов. Один - это собственно выборка - и другой это вставка.
    Скорее всего медленно работает выборка в части соединения двух таблиц.
    INSERT INTO tabel0 (row_1, row_2, row_3, row_4)
    SELECT oa.row_5,
           oa.row_6,
           oa.row_7,
           nw.row_8
    FROM table1 t1
           LEFT JOIN table2 t2 on t2.row_9 = t1.row_10
    WHERE t2.row_11 IS NOT NULL;

    Вот здесь где идет join по row_9 и row_10 надо построить индексы по этим полям.
    Потом прогнать analyze по обоим таблицам.

    И запустить еще раз.

    Вставка тоже может тормозить по разным условиям (триггеры, instead-of триггеры, сложные констрейнты
    или просто сложные типы данных наподобие xml/json которые требуют много I/O). Но для начала
    надо хотя-бы с выборкой разобраться.
    Ответ написан
    3 комментария
  • Как массово изменить значение ID в таблице wp_posts из базы данных сайта Wordpress?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега SQL
    Седой и строгий
    Идентификаторы должны оставаться неизменны, в этом их суть.
    Ответ написан
    Комментировать
  • Как в запросе сослаться на предыдущие строки?

    scoffs
    @scoffs
    Frontend | C# | Student
    Возможно, вам надо что-то типа этого:
    SELECT * FROM (
      -- Внутренний подзапрос, применяющий оконную функцию LAG() к таблице calls
      SELECT *,
        LAG(duration) OVER (PARTITION BY cid_from ORDER BY call_time) AS previous_duration
      FROM calls
    ) AS subquery
    -- Основной запрос, фильтрующий результаты
    WHERE duration > 20 -- Длительность звонка больше 20 минут
      AND previous_duration < 2; -- Предыдущая длительность меньше двух минут
    Ответ написан
    1 комментарий
  • Что такое бизнес логика и как их разделять с логикой приложения?

    Adamos
    @Adamos
    Владимир, вы бы еще архитектуру хелловорлда взялись "понимать".
    Если хотите понять в двух словах, то можно применить такой принцип: бизнес-логика - это то, ЧТО должно выполнять приложение. А логика приложения - то, КАК оно это выполняет. Гругря, "по заказу формируются документы в формате XLSX и PDF" - это бизнес-логика. А вот запрос к БД за данными заказа, разбор шаблона документа, использование библиотек для генерации файлов нужного формата - это логика приложения. Отталкиваясь от такого примитивного понимания, можно разглядеть уровни в коде: где программист размахивает человекопонятными блоками и выполняет техзадание, а где - копается в байтах, соединениях и потоках вывода. Если мы одно от другого отделяем, то оказывается, что низкий уровень для большинства задач один и тот же и его можно опять-таки собрать в библиотеки и практически без изменений использовать там, где понадобилась другая бизнес-логика, но использован тот же технологический стек.
    Ответ написан
    1 комментарий