база данных и много документов
-
может кто подскажет лучший способ хранения и обработки большого количества записей в базе данных?
есть быстро растущая база данных и следующие паттерны ее использования:-
проверить есть ли запись в базе, если нет - добавить запись. и допустим за раз нужно проверить и потенциально добавить 10 000 записей(документов)
если сделать в лоб: для каждого проверяемого значения получить запись с фильтром по этому значению и если колличество записей меньше одной - добавить запись. До тех пор пока записей в базе несколько тысяч все терпимо, дальше ...
какое-никакое решение: вначале собрать все Новые Данные(быстро, не критично), отчистить от дублей(быстро, все что будет дальше сделает еще быстрее), после получить из базы страницу в миллион Записей, или несколько раз меньшее Записей(медленно, но что делать), получить из Записей только нужное Поле и чтобы сделать все совсем плоско склеить их в Строку(быстро), проверить есть ли каждые Новые Данные в Строке(быстро), и если нет добавить Запись c Новыми Данными(не хватает insertMany, но в любом случае добавление новой записи довольно быстро)
решение? решение. -
получить из базы каждую запись, совершить, по итогам изменить запись. мы помним что в базе под миллион записей и чтобы было быстрее пусть потоков будет 200
если получать из базы страницы по 1 записи от 1 до миллиона поплохеет.
уменьшим количество обращений к базе в 1000(или 10000) раз - получать из базы страницы по 1000 записи от 1 до тысячи
но потом то все равно придется изменить миллион записей по одной за раз(updateMany вероятно помог бы и тут, но нет же)
любые ваши идеи?
ничего не знаю про носкюл, а кто из них индекс? можно индексом сделать нужное поле?
-
-
@ruzne в сторону Clickhouse не смотрел?
-
@romanbiz said in база данных и много документов:
@ruzne в сторону Clickhouse не смотрел?
в первый раз слышу об этой...
понятно что множественная вставка есть во многих или всех реляционных субд, но и в noSQL она тоже есть и вроде как и в монгоБД есть множественный insert и множественный update вроде.
про монго, хранить он вроде большое количество документов без проблем и я кое что изменил и оптимизировал, кроме того что описано выше я например добавил признак по которому некоторые записи проверяются в каждом проходе а значительно реже и готов что-то еще менять.
то есть например получение большого количество документов из очень большой таблицы с большим количеством фильтров выполняется с приемлемой скоростью, а вот большое количество запросов на чтение а так же на изменение данных приводят к висим.
если использовать сторонний субд то я скорее всего выберу чтото знакомое. А что особенного в КликХаузе?
я так понимаю в ноде есть инструмент для монгоДБ. Там то хоть можно мультивставку?
upd. думаю моя проблема решена, все таки хуже всего это операция чтения из базы сфильтром, вероятно, мне так кажется..