Ответы пользователя по тегу MySQL
  • Как сделать поиск данных из mysql которые сохраненны в формате unicode?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Эта строка просто не работает.
    $where .= " AND {$table_prefix}`{$this->search_by}` LIKE '%{$this->search}%'";
    Ответ написан
  • Как правильно сделать сортировку в таблице базы данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Приоритет и две даты можно конвертнуть в строки и конкатенировать. Только следи за тем
    чтобы лексикографический порядок соблюдался. Если честно непонятно что тебе дает это
    объединение. Сортировки и для трех нормально работают.

    UPD: Я обновлю свой ответ на основе новых данных.
    Менеджеры хотят в приложении задачи перетаскивать

    Если это наподобие двигания тасок в JIRA-borad то тогда действительно не нужны
    никакие даты. Нужно одно поле rank. Возможно поле priority это оно и есть.

    Тогда при накидывании тасок на доску мы просто делаем им sequence с любого
    стартового значения. А когда менеджер двигает - нам нужна процедура
    swap(id1, id2)
    которая просто меняет ранги местами для двух JIRA ids.
    Ответ написан
  • Равноценно ли использование MariaDB вместе MySQL?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для учебных задач тебе будет почти безразлично. Можешь ставить MariaDb.
    Ответ написан
    Комментировать
  • Как довести созданную БД до рабочего состояния?

    mayton2019
    @mayton2019
    Bigdata Engineer
    MySQL Workbench Community edition. Я быстро сделал все необходимые таблицы и создал связи, как нас учили, осталось только экспортировать ее для того, чтобы с ней можно было работать, но почему-то я совсем не могу понять, как это сделать.


    По данным обрывочным сведеньям невозможно сделать анализ ошибки. Опиши что ты делал по шагам.
    Процесс экспорта в MySQL начинается с

    $ mysqldump ....

    Покажи консоль. Покажи спул. Покажи какого размера получились файлы. Что внутри? Должны быть
    текстовые скрипты внутри (это важно потому что некоторые dbms под экспортом или дампом или бэкапом
    подразумевают вообще другие вещи).

    Мне кажется ты рыспыляешся и бежишь впереди паровоза. Тебя просили сделать одно а ты сам себе написал
    нефункциональные требования и выбрал dbms и словил кучу ошибок.

    Хочешь совет опытного? Если забуксовал больше 1 дня на технологии - выкинь ее. Возьми Excel или Access.
    Твоей маме будет безразлично а тебе - проще. Короче реши что тебе надо на самом деле. Изучать новые
    dbms или помогать родственникам.
    Ответ написан
    Комментировать
  • Как получить непересекающиеся строки между двумя запросами с group by?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Используй except:
    select * from ....
    except
    select * from ....
    Ответ написан
    Комментировать
  • Как сравнить данные двух mysql баз и внести изменения?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Импортируй первую базу во вторую. А потом вторую в первую.
    Ответ написан
    Комментировать
  • Как установить максимальное количество строк в таблице?

    mayton2019
    @mayton2019
    Bigdata Engineer
    По постановке это похоже на буфер очереди сообщений. Вам нет смысла синхронно удалять хвостовые строки.с
    Пускай это делает отдельный джоб раз в сутки например. Вам - же не принципиально если пол дня табличка будет в 1001 строку?

    А консистентный снимок top 1000 строк вы всегда можете получить запросом с сортировкой и лимитом. И это будет решение в духе баз данных а не Java-буферов с блокировками.
    Ответ написан
  • Mysql постоянно отваливаеться, to many connection, connection refused, как оптимизировать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Скорее всего неверно написанное приложение. По хорошему надо использовать пул коннектов и тогда БД не будет видеть такие ошибки. Но возможно другая ситуация когда сессии будут долго ждать освобождения нового объекта connection из пула. А почему он долго не освобождается - это еще один вопрос. Видимо у вас - длинные транзакции. Этого надо избегать. Короче проблема комплексная и надо смотреть "как было раньше" и "что изменялось". Хорошая идея откатить версию комплекса на 1 шаг назад чтобы просто посмотреть что действительно проблемы на было и в новой версии она возникла. Не думаю что хостинг тут сильно виноват.
    Ответ написан
  • Какое ваше отношение к таблицам с внешним ключам с NULL значением?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В более крупном масштабе это не работает. В географических справочниках и классификаторах есть одна
    проблема. Адресная строка - неформализуема.

    В разных странах и государствах после уровня страны например не всегда идут города или области. Там могут
    быть более сложные объекты (федеральные земли, периферии). И хуже того они могут стоять на разных уровнях. Улицы одного города могут внезапно иметь двойников (после слияния поселков к примеру). Могут быть улица Ленина, проспект и бульвар и переулок того-же имени.

    Вобщем если вы хотите иерархию - то можно делать иерархию. Но нельзя гарантировать жесткую типизацию для какого-то уровня. И с уникальностью - косяки.
    Ответ написан
    2 комментария
  • Как добиться баланса между скоростью и производительностью при импорте ~200к строк в базу данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    1) 200k строк это вобщем-то мало для современных БД
    2) Загрузи как есть в новую таблицу вот как тут пишут
    https://stackoverflow.com/questions/14127529/impor...
    3) С помощью alter add column добавь нужные колонки и обнови через UPDATE.

    Никуда больше копать не надо. Загрузка данных - уже 30 лет как решенная коробочная задача.
    И ее делают встроенные в БД утилиты и сама БД если если ей доступен диск с csv-файлом.

    Никакой ORM тебе тоже не нужен. ORM вообще - противопоказан для задач аналитики и ETL.
    Ответ написан
    9 комментариев
  • Почему скрипт не понимает, что данные в MySql изменились?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Первым делом надо доказать отсутсвие глупых ошибок. Типа вместо продуктовой БД пошел в тестовую.

    Сделай этот-же запрос из mysql консоли

    mysql> SELECT flag FROM designbase WHERE id = 501285409


    И попробуй для 2 исходника включить автокоммит как тут пишут https://mariadb.com/kb/en/mysql_autocommit/
    Ответ написан
  • Как правильно соединить при выдаче 2-3+ разных таблиц с одинаковой структурой в единую выборку?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно UNION автоматически делает distinct для всех таблиц-участников процесса union.
    Это является причиной замедления.

    Используй UNION ALL.
    Ответ написан
    3 комментария
  • Общий доступ к данным хранимым в MySql?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если говорить о pet-проектах то нагрузка там маленькая. MySQL можно поднимать локально или в локальном докере.

    Реальная потребность во внешнем хостинге обычно идет от реальных задач. Тоесть от задач которые приносят деньги. И поэтому обсуждать бесплатные хостинги с негарантированной полосой - нет смысла. Они все равно будут хуже чем платные. Это мой опыт работы с Amazon. Все бесплатное - нихрена не работает. Не поддерживается. А если ищете поддержки - начинайте платить.
    Ответ написан
    Комментировать
  • Какова синтаксическая ошибка MySQL?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Наверное не value а values
    INSERT INTO books (title, author, price, quantity) values
    Ответ написан
  • В каком виде, хранятся записи в БД, подобные постам в соц.сетях?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Современная соц-сеть - это уникальная софтварная архитектура которая строилась индивидуально.
    Вряд-ли вы сможете ее просто повторить имея mysql/php/nginx.

    VK/Facebook имеют свои технологии кеширования контента в основном построенные на материализации
    страниц. Базы данных обычно - не-реляционные. Модель проектируется так чтобы не было joins между
    таблицами. И активно используются очереди сообщений. Вот в соц-сети Linked-In это было настолько
    важно что даже был создан отдельный программный продукт который сейчас называют Apache Kafka.

    Активно используются горизонтальное масштабирование. Сеть наращивает мощности просто путем подключения
    новых адресов в dns с балансом по географии, и запуска новых web-nodes и новых дисковых реплик хранилищ для картинок и текстов постов.

    Поэтому вопрос в каком виде хранятся записи - тут не важен. Тут важно чтоб кеши обновились синхронно с событием поста например.
    Ответ написан
    7 комментариев
  • Как увеличить скорость загрузки данных в Mysql?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть базы данных, весит примерно 40 гб. Нужно его восстановить на свой сервер

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

    (я достигал резкого увеличения скорости загрузки когда переключал engine с InnoDb на MyISAM.
    Это было давно. И как щас я не знаю. Может щас появились новые engines которые лучше чем
    MyISAM. Надо читать. Но на тот момент мне транзакции были безразличны. Нужно было просто
    хоть как-то загрузить данные и MyISAM помог).

    Очень хорошо грузится CSV в пустую свеже-созданную таблицу без ничего. Даже не надо объявлять PK.. Лучше потом его активировать и также добавить констрейнты в режиме no check.

    UPD:
    Ответ написан
    Комментировать
  • Как узнать процент похожести текста?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне кажется что для обобщения надо все таки новую статью добавить в MySQL. Чтоб API проводящий сравнение хотя-бы был единообразным.

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

    Насчет Sphinx - ничего не скажу. Не использовал. Но в классическом текстовом поиске все слова хешируются в 18-20 битные числа. Потом гистограмма. И дальше эти векторы можно быстро сравнивать. (там еще слова чистятся. удяляются предлоги. приводятся к единой форме). Это теория. Как это реализовано в MySQL - я ХЗ. В Postgres это точно есть. Один чел выше уже написал.
    Ответ написан
    Комментировать
  • Подойдет ли mysql для работы с aiogram?

    mayton2019
    @mayton2019
    Bigdata Engineer
    При 700 наверное вообще любая БД подойдет.
    Но тут надо еще отметить что архитектура БД выбирается исходя из наиболее типичных запросов.
    Например для установления дружбы между людей в соц-сетях и для принятия маркетинговых решений
    берут графовую БД. Для хранения сета вариативных документов - берут Mongo. Для финансовых транзакций
    с историей - берут классические реляционные типа Oracle/PG.
    Ответ написан
    Комментировать
  • Насколько сильная разница между запросами * и `id` в MySQL?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Лучше звездочку не использовать по двум причинам.

    Первое - это объем сетевого трафика. Если в таблицу будет добавлено 4 поле например типа BLOB и туда
    будут вставлять картинки - то при каждом select * ... картинка будет транслироваться по сети даже если
    она вам не нужна.

    И второе - просто неожиданно поведение софта, который ожидает поля именно в этом порядке
    id, name, balance
    если кто-то захочет поменять тип данных name например - то он сделает drop column name, а потом
    создаст новое поле alter table add column .... то в таблице они лягут в заголовок уже в новом порядке
    id, balance, name
    Какие будут последствия - чорт его знает но ничего хорошего для автоматизированных систем ждать
    не стоит.

    Вобщем всегда указывайте явно поля.
    Ответ написан
    Комментировать
  • Что надо знать для размещения сайта и работы с данными?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Надо ли учить PHP и MySQL?

    Считается что PHP/MySQL относятся к "морально устаревшему" стеку технологий (LAMP (lin+apache+mysql+php).
    (Я думаю что знания MySQL полезны. Это лучше чем "никакой" SQL.)

    На смену ему должен был выйти лет 7 назад MEAN (mongo+nodejs+....e.t.c.).
    Мне уже поздно переходить в MEAN. Слишком стар. Но я-бы перешел просто потому что это
    более новый взгляд на старое. Новое - всегда лучше чем старое.

    Учу веб-разработку для фриланса - делать сайты на заказ (знаю, что рынок супер конкурентный). По книжкам выучил JS, HTML, CSS, базовый jquery (*тут могла быть ваша шутка*), к фреймворкам и библиотекам пока не приступал.


    По поводу "размещать сайт". Это вообще не твоя основная цель. Цель - набить руку в системе.
    Для этого тебе не нужно иметь свои хостинги. А нужно просто влиться в систему которая уже
    их делает в режиме конвейера.

    По поводу "выучил по книжкам". Ты не выучил еще ничего. И дело даже
    не в техниках верстки. А ты пока не понял как работает процесс коллективной разработки софта.
    Это сложно. Это интересно и эффективно. И ты будешь эффективнее в команде а не во фрилансе.
    Работа в команде - это не только код. Это согласование ТЗ. Документирование.
    Скрам-процессы. Корпоративная этика и кодекс поведения. Это как лак для дерева.
    Ты - пригож для всех корпораций после этого. А во фрилансе хоть 40 лет просиди.
    Никто характеристики не даст и не впишеться.

    Поэтому лучше пойди в корпорацию. Покрутись несколько лет. Получи своё видение. И потом
    уже во фриланс если будет желание.

    Хочу понять, насколько глубоко надо лезть в бэкэнд

    На этот вопрос сложно ответить. Ты скорее сам почувствуешь. Опять-же после опыта в корпорации.
    Кстати и развиваться можно внутри корпораций вполне себе хорошо. И курсы и тренинги и сертификация.
    ИЧСХ тебе корпорация их и оплатит.
    Ответ написан
    Комментировать