• Оцените запрос с точки зрения производительности?

    @whats
    с чего это вдруг джоин будет чем то отличаться от этого запроса ? Порядок разбора знаете ? не пишите ерунды!
  • В чем PostgreSQL лучше чем MySQL?

    @whats
    SlimHouse: ну человек делает маленькие сайты, уровень пока еще не тот. Тут нет смысла ему что то доказывать. Настанет время и он сам все осознает.
  • В чем PostgreSQL лучше чем MySQL?

    @whats
    Вячеслав Успенский: я как нибудь без говнокода обойдусь. Всегда есть решение которое подходит к задаче. А вам мир, развивайтесь и не делайте хуйни
  • В чем PostgreSQL лучше чем MySQL?

    @whats
    Вячеслав Успенский: в синтетических тестах, то есть тесты ради тестов. Если бы вы знали как устроены 2 вида этих баз вы бы не писали такое. Я бы не стал использовать джоины.
  • Node JS + Mysql Как постоянно проверять появление новых элементов в базе?

    @whats
    Дмитрий Энтелис: ну пошли лялял не по теме, вы опять чушь начали нести. Так что закрываем ее. Про пачку я знаю, но смысл очереди при этом не меняется.
  • В чем PostgreSQL лучше чем MySQL?

    @whats
    Вячеслав Успенский: Join и nosql ? зачем вам оно тогда, оно не создано для этого! Но в любом случае все зависит от схемы по которой вы решаете задачу. Никогда еще реляционные базы не выигрывали по скорости перед nosql решениями.
  • В чем PostgreSQL лучше чем MySQL?

    @whats
    ptchol: представляю ваш говнокод в проектах где вы на вашем ЯП обрабатываете данные которые должна была обработать база данных
  • Node JS + Mysql Как постоянно проверять появление новых элементов в базе?

    @whats
    Дмитрий Энтелис: По описанному вами вы перекинули задачу на пхп где есть и демоны и воркеры. В ноде же этого нет, там 1 процесс с очередью разбора запросов. Можно так же в приложении и хранить изменение данных и брать их из переменной процесса, даже если у нас нет сокетов. Но если уйти от варианта с нодой и вернуться к Пхп то ваш вариант с рэббитом проигрывает обычному запросу к базе. Потому что все что вы описали нужно настраивать и с очередью.

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

    вот это все какой то вакуум не из этой задачи. Так что во второй раз вы не попали с дополнительным стеком.

    Это хорошо что вы знаете о таких вещах, но блин нельзя всем советовать устанавливать что нибудь еще, когда это можно сделать все просто из уже имеющихся средств.
  • Node JS + Mysql Как постоянно проверять появление новых элементов в базе?

    @whats
    Дмитрий Энтелис: может быть вы не понимаете того что понимаю я ? Или я не понимаю. Разберите пожалуйста мои мыли, и укажите в чем я могу быть не прав.

    Есть 2 абстракции. Первая (А) - я ,который сижу на какой либо странице и жду когда что-то произойдет. В данной ситуации база данных обновилась. Вторая (Б) - человек который обновил базу скриптом на нашем сервере.
    Вариант 1. Веб сокеты.
    Приложение подобно чату. Мы записываем всех подключенных клиентов. (Б) при вызове метода добавления в базу чего-либо вызывает метод add. Который у нас проходится по всем слушателям и отправляет им сообщение методом send. Они же подписаны на событие message и обновляют информацию на экране. (А) видит что в базу что-то попало.

    Вариант 2. Ajax
    Мы раз в 2-3 секунды стучимся на сервер и опрашиваем базу банальным и самым быстрым запросом на чтение где берем например максимальный идентификатор и сравниваем его с уже имеющимся, и выбираем нужные нам данные. Можно даже 1 запросом это делать. Запрос такой 3-5 мс выполняется. Время на подключение к базе не учитываем, можно не открывать каждый раз новое подключение. Издержки практически нулевые.

    Вот 2 моих варианта. Без каких либо добавлений в стек технологий.
    Первый вариант я с вашим не рассматриваю, мой уже лучше и быстрее. Так как нет никаких издержек на не нужные очереди, при добавлении данных в базу мы сразу рассылаем всем подключившимся информацию.

    Второй вариант. Разницы никакой нет, вы подключаетесь к рэббиту через брокера, либо вы подключаетесь к базе. Лага никакого нет, не забывайте что мы делаем это не на соккетах и при обращении к очереди вы так же испытаете эту задержку. Как вы собираетесь по другому пути обращаться к очереди я не понимаю. Какие воркеры вы имеете ввиду ? 1 воркер = 1 запрос который потом отпадает.

    Почему логика отделена, при чем тут демон, мы о nodejs говорим ? Для этого существуют события. Мы можем выбрасывать событие записи в базу данных, и его обрабатывать. Нам не важно что и как происходит в этой логике. У нас есть событие и есть его обработчик. Они могут быть в любых прослойках нашего приложения.
    Научить???
    var WebSocketServer = new require('ws');
    var webSocketServer = new WebSocketServer.Server();
    Научил ? Когда он мертв мертво наше приложение. Не понимаю дальше о каких демонах вы говорите, почему их несколько, может быть и можно ими управлять но зачем ?

    Если я не понимаю чего нибудь покажите статью где это решение описано лучше. Может быть реально я чего то не знаю.
  • Node JS + Mysql Как постоянно проверять появление новых элементов в базе?

    @whats
    Может быть еще Open Office установить и ваш любимый сфинкс. Записывать в ексель документ запись о добавлении в таблицу, индексировать сфинксом это все дело и потом еще Рэббит подключить. Огненный стек получится, а главное столько всего подключено, как вы любите!!!

    Зачем все это тут нужно ? Какая разница что пользователь будет стучаться за данными в базу и смотреть появилось что-то или нет, или в вашу очередь ? Что от этого меняется ? ЗАЧЕЕЕЕМ тут вообще эта очередь ?

    Тут если идет соединение на сокетах то пусть при добавлении в базу и посылает ответный месседж всем слушателям.

    Если без них то по таймеру как указал автор с указанием последнего полученного значения.
  • Как найти измененное значение в столбце?

    @whats
    DenisOgr: ну тут только одному вам известно что является последним значением, ни одного экстрасенса не подошло :)

    запрос составьте с order by по id desc и выберите первое значение не равное 1, вот вам и будет то что вы описали выше. Если вы конечно ид AI объявили
  • Где взять базу всего транспорта(авто, мото, автобусы, грузовики, прицепы, комплектующее) + характеристики?

    @whats
    @Ras: оболочки нет. Голая база данных оптимизированная под мои нужды и запросы. Внутренние поиски мы проводим с помощью нашего приложения. Но его я не продаю. до 2012 года полное покрытие по маркам и моделям. в данный момент в базе более 110 тысяч модификаций транспорта. Каждая марка связана с деталями. Как с оригинальными так и с аналогами. После 2012 года я не могу ручаться за полную поддержку всего модельного ряда. Но она пополнялась до сегодняшнего дня. Мы просто решили пойти другим путем и полная актуальность базы на данный момент нам не нужна.
  • Как оптимизировать SQL запрос рандомной выборки?

    @whats
    @DmitriyEntelis: опечатка, в моем запросе это не нужно ORDER BY RAND()
    Поэтому запрос что привел я рандомит по ROUND(RAND()) =1, это как пример, вы можете написать любую функцию вычисления случайного числа и потом сравнивать с каким нибудь другим случайным числом.
    Вы конкретно спросили - мне очень интересно, как вы планируете в чистом mysql выбирать случайные записи.
    я вам конкретно ответил с примером. На чистом sql ? ДА! Вы теперь вернулись к условию автора, хорошо. Начинаем с начала. Ваше кстати решение так же возвращает ваши сотни тысяч данных в пхп. Мое же работает только в базе и возвращает 10 значений.

    но так как вы упорно не видите о чем я вам пишу давайте разберем ваше решение.
    1)Первое что нужно найти автору это все совпадения с его запросом.(Вернулись сотни тысяч ИД из сфинкса)
    2)Вы эти сотни тысяч засовываете в пхп скрипт и выбираете случайные 10
    3)Вы передаете эти значения в запрос к базе данных

    Не вижу чем ваше решение отличается от решения автора ? Все тоже самое. Только добавился еще сфинкс. Все тоже самое можно сделать в одной базе, запросы выше. Вы теперь это понимаете ?

    Если мы говорим о действительном рандоме всех записей то ORDER BY RAND() тут не играет собственно никакой роли, на таблице в 1кк записей поиск по LIKE у меня занял 2.3 секунды и вернулось более 200 записей, с RAND() поиск занял 2.35.
    Предложенный мной вариант вернет рандомные записи в первой части данных, что полностью решает поставленную задачу автора. Без Сфинкса !!!
  • Как оптимизировать SQL запрос рандомной выборки?

    @whats
    @DmitriyEntelis: Не очень хочу с вами спорить. У нас большое различие в подходе и в применимых знаниях. Вам что бы узнать максимальный ид подзапроса нужно возвращать данные или делать 2 запрос, мне только обратиться к переменной что была в запросе ниже. Оверхед ? Да минимальный самый. Сделайте бенчмарк инкремента. На 100кк записей 1.4 секунды на моей конфигурации. Если кому то нужно будет с таким объемом данных что то сделать... Я не знаю кому это может придти в голову.

    Как на чистом SQL, а не mysql выбрать данные ? Автор написал реализацию с LIKE RAND(). Я ее предложил заменить на полнотекстовый поиск с подзапросом, что можно в принципе сделать и без него, данные он в предикате сокращает в численности, а далее к ним уже добавляется функция рандома. Так же ниже есть ссылка на такие же рандомные выборки. Вот так примерно я и планировал.

    Конкретный запрос вот такой
    SELECT * FROM table WHERE MATCH() AGAINST() AND ROUND(RAND()) =1 ORDER BY RAND() LIMIT 10
  • Как оптимизировать SQL запрос рандомной выборки?

    @whats
    @DmitriyEntelis: Если нам нужно вытащить 20 случайных записей из базы то логично :) что логика этого процесса должна находиться в базе. Когда все это можно сделать только в ней. Если человек настроит нормально полнотекстовый поиск в своей базе то менять ничего не нужно.

    То есть на больших объемах настройка сфинкса чем то будет отличаться ? Хотелось бы узнать чем.
  • Как оптимизировать SQL запрос рандомной выборки?

    @whats
    @DmitriyEntelis: я не рассматриваю LIKE в данном ключе вообще никак, вы советуете автору изменить бизнес логику размазав ее по 3 уровням. Если не брать LIKE во внимание можно все сделать на постгресе например в его среде. Поверьте будет не хуже сфинкса! Только это все происходить будет в 1 месте вместо ваших трех. Если брать Mysql то у него так же есть полнотекстовый поиск, который в различных ветках этой базы отличается по производительности. Опять же, заменить базу и сделать все что нужно в ней.

    А сфинкс надо еще настроить и проиндексировать. Ну а с РТ индексами мало кто умеет работать правильно.
  • Как оптимизировать SQL запрос рандомной выборки?

    @whats
    зачем куда то выносить логику если ее можно сделать в базе ? Все работает быстрее чем в предложенном вами варианте со сфинксом и пхп.
  • Где взять базу всего транспорта(авто, мото, автобусы, грузовики, прицепы, комплектующее) + характеристики?

    @whats
    @WebEditor демо нет, продажа этой информации для меня не приоритетна. По запросу могу выдать те или иные данные. В базе порядка 5 млн запчастей и около 30 млн кросов.
    Основная база - Тех дoк.
    вагоны, камазы, трактора, мото и прочее уже не помню откуда брал. Было много сайтов, дисков было еще больше обработано. Парсилось все для внутренней системы по поиску автозапчастей.