Виталий Бохин
953 сообщения
#3 года назад
Приветствую. Помогите определиться с выбором бд для сервиса аналитики. Особых требований к структуре данных нет, будет известный набор полей, типо клики, визиты, стоимость, заявки и тп. То есть данные нормально лягут и на таблицу sql и на документы nosql. Склоняюсь к mongo, так как backend будет на node.js. Остается вопрос в надежности и скорости обновления (update), например пиксель на сайте будет считать посетителей и обновлять поле. Полей может быть несколько тысяч, обновляться могут раз в секунду и чаще. Вменяемой информации по скорости не нашлось. Про надежность все топят за mysql но я так и не понял нюансов. Проверял скорость сам, таким кодом. в монго значение 4999 достигло примерно за 30 сек. в mysql за 1 минуту. Ну и вопрос также в надежности, в некоторых источниках пишут, что из mysql потерять данные невозможно, а из mongo запросто, только не пишут почему.

const db = require('./db');
const sdb = require('./sqldb');

let i = 0;

setInterval(function () {
    i++;

    if (i >= 5000) {
        return;
    }
    
    db.updateMany('users', {uId: 33}, {$set: { login: i }});
    
    sdb('UPDATE users SET login=' + i + ' WHERE uId=33');
}, 1);
Артем Л.
11416 сообщений
#3 года назад
Когда идет одновременно много данных в базу, то таблицы блокируются и все будет висеть.
Нужно смотреть в эту сторону и выбирать решение, которое будет минимизировать блокировку таблиц.
У нас было очень много проблем с этим в свое время, но потом перешли на InnoDB и стало более менее нормально работать.
Виталий Бохин
953 сообщения
#3 года назад
Hungry_Hunter, я выбрал InnoDB но вот все равно так долго получается
Елена Б.
6863 сообщения
#3 года назад
Postgress + Timescale 
Александр Ф.
3318 сообщений
#3 года назад
Тоже плюсую за постгресс, а насчет скорости - немалое значение имеет конфиг, Вы пытаетесь взвесить разные системы с непонятными конфигами, даже в одном и том же мускуле на разных версиях и с разными оптимизациями будут разные показатели. Не говоря уже о железе, батарейках с кешами, настройками записи на райтбек, технологиями рам сторадж или ускорителей в виде ссд типа фузион драйв и прочих железных штуках.
Если с железом можно постепенно апгрейдиться или просто перебирать впс сервера разных хостеров, то с системой лучше определиться заранее, потом будет нереально сложно с наращенным функционалом куда то пересаживаться.
Виталий Бохин
953 сообщения
#3 года назад
regado, можете в нескольких словах объяснить, чем postgresql лучше mongodb и mysql? информация везде очень расплывчата. интересует в первую очередь скорость записи и изменения, ну и чтоб запись имела больший приоритет, скорость чтения не так важна, чтение можно остановить, когда пошли запросы на запись
Александр Ф.
3318 сообщений
#3 года назад
Я могу быть некомпетентен с ответом, но выражу свой опыт так: когда парсили и анализировали на составляющие десятки тысяч сайт с различными факторами оптимизации по 8-10 штук на каждый урл, то с мускул становилось сложнее работать. У меня сложилось впечатление, что большие данные это не мускул, это уж если на то пошло MSSQL. Ведь незря 1с базы работают на mssql.

Более красиво и полно описано в этой статье, зачем далеко ходить:
Виталий Бохин
953 сообщения
#3 года назад
regado, написано не плохо. к сожалению postgres сложен в установке и настройке. провозился пол дня, а итог - никаких баз данных серверов, и создать ничего не возможно. посоветуйте вменяемый мануал, как установить это дело на vps.
Приложения:
  • 343 КБ
Виталий Бохин
953 сообщения
#3 года назад
regado, установить удалось, но предстоит еще разбираться. mysql и mongo прозрачней и проще. может по этому они популярнее
Приложения:
  • 284 КБ
Виталий Бохин
953 сообщения
#3 года назад
Спасибо всем за советы. Postgresql судя по моим тестам реально летает, в отличие от mysql и mongodb.
Александр Ф.
3318 сообщений
#3 года назад
lufter, рад слышать, надеюсь это может являться неплохой такой причиной изучить его поближе )
Виталий Бохин
953 сообщения
#3 года назад
regado, ага, уже решил, буду проект на ней делать. Несколько дней ковырялся, смотрел типы, пробовал запросы через nodejs. Всё нравится, есть нужные фишки, типо массивы которые можно пушить прям за один запрос, а не как в мускуле танцы с json, ну и прелести реляционки, которых нет в монге. Возможно postgresql вытеснит для меня mysql, там где будет выбор конечно.
Томи Т.
18 сообщений
#3 года назад
lufter, ну так что там, хэппи-енд или нет?
Андрей Андреев
798 сообщений
#3 года назад
+1 за postgresql
Если вдруг нужно будет хранить не структурированные данные - в  postgresql есть формат данных jsonb. По нему вполне себе можно строить запросы и даже строить индексы.