база данных и много документов



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

    1. проверить есть ли запись в базе, если нет - добавить запись. и допустим за раз нужно проверить и потенциально добавить 10 000 записей(документов)
      если сделать в лоб: для каждого проверяемого значения получить запись с фильтром по этому значению и если колличество записей меньше одной - добавить запись. До тех пор пока записей в базе несколько тысяч все терпимо, дальше ...
      какое-никакое решение: вначале собрать все Новые Данные(быстро, не критично), отчистить от дублей(быстро, все что будет дальше сделает еще быстрее), после получить из базы страницу в миллион Записей, или несколько раз меньшее Записей(медленно, но что делать), получить из Записей только нужное Поле и чтобы сделать все совсем плоско склеить их в Строку(быстро), проверить есть ли каждые Новые Данные в Строке(быстро), и если нет добавить Запись c Новыми Данными(не хватает insertMany, но в любом случае добавление новой записи довольно быстро)
      решение? решение.

    2. получить из базы каждую запись, совершить, по итогам изменить запись. мы помним что в базе под миллион записей и чтобы было быстрее пусть потоков будет 200
      если получать из базы страницы по 1 записи от 1 до миллиона поплохеет.
      уменьшим количество обращений к базе в 1000(или 10000) раз - получать из базы страницы по 1000 записи от 1 до тысячи
      но потом то все равно придется изменить миллион записей по одной за раз(updateMany вероятно помог бы и тут, но нет же)

    любые ваши идеи?

    ничего не знаю про носкюл, а кто из них индекс? можно индексом сделать нужное поле?



  • @ruzne в сторону Clickhouse не смотрел?



  • @romanbiz said in база данных и много документов:

    @ruzne в сторону Clickhouse не смотрел?

    в первый раз слышу об этой...

    понятно что множественная вставка есть во многих или всех реляционных субд, но и в noSQL она тоже есть и вроде как и в монгоБД есть множественный insert и множественный update вроде.
    про монго, хранить он вроде большое количество документов без проблем и я кое что изменил и оптимизировал, кроме того что описано выше я например добавил признак по которому некоторые записи проверяются в каждом проходе а значительно реже и готов что-то еще менять.
    то есть например получение большого количество документов из очень большой таблицы с большим количеством фильтров выполняется с приемлемой скоростью, а вот большое количество запросов на чтение а так же на изменение данных приводят к висим.
    если использовать сторонний субд то я скорее всего выберу чтото знакомое. А что особенного в КликХаузе?
    я так понимаю в ноде есть инструмент для монгоДБ. Там то хоть можно мультивставку?
    upd. думаю моя проблема решена, все таки хуже всего это операция чтения из базы сфильтром, вероятно, мне так кажется..


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.