Вы можете легко осквернить этот набор данных, но вам может не потребоваться это в зависимости от типа анализа, который вы пытаетесь выполнить.Если это просто история того, что нравится каждому пользователю, то вы, вероятно, можете использовать разделение базы данных для разделения данных по диапазону по дате, а затем подразделение по user_id.
Если вы будете часто обновлять дату (пользователи могут «отличаться»), то вам, вероятно, стоит взглянуть на шардинг.Вот пример реализации шардинга: Shard-Key-Mapper .Вы можете выполнять распределенные параллельные запросы по набору данных (например, map / проводить для SQL) здесь: Shard-Query .
Если вы разделяете на части, я должен предложить разделить на user_id и сохранить таблицу продуктов в качестве «разделяемой» таблицы, которая дублируется на каждом фрагменте.Вы должны использовать метод шардинга на основе каталога, который позволяет перемещать пользователя между шардами.Вся информация об одном пользователе и информация о том, что ему нравится, будет храниться вместе на одном осколке.