Мне нужно хранить большие массивы id (участники групп в соц сетях). И вот я думаю, как лучше это организовать, чтобы можно было не только хранить, но и эффективно получать данные например:
- найти все группы одного участника
- получить пересечения участников между группами
- сравнивать новый массив с тем, что в БД, на наличие новых участников
Я использую PosgreSQL как основную БД и там есть тип поля array, у которого нет лимита и который индексируется. Я думаю создать отдельную таблицу group_memebers с group_id::int, member_ids::array. Насколько это оптимальное решение? Ведь в группе могут быть и 10 миллионов пользователей. Индекс будет гигантским. Возможно ElasticSearch, MongoDB или др. продукты имеют какие-то преимущества перед Postgres в этом случае?