Я пытаюсь сохранить в базе данных postgresql некоторые уникальные идентификаторы вместе с сайтом, на котором они были замечены. Я не могу действительно решить, какой из следующих 3 вариантов выбрать, чтобы быть быстрее и проще в обслуживании. Таблица должна содержать следующую информацию:
- уникальный идентификатор, к сожалению это текст
- сайты, на которых этот уникальный идентификатор был замечен
Количество данных, которое должно храниться, довольно велико: я знаю около 22 миллионов уникальных идентификаторов.
Итак, я подумал о следующих конструкциях таблицы:
Этот подход потребует около 22 мил, умноженных на количество сайтов.
id - целое число
идентификатор - текст
seen_on_site_1 - логическое значение
seen_on_site_2 - логическое значение
............
seen_on_site_n - логическое значение
Надеюсь, количество сайтов не превысит 10. Для этого потребуется только количество уникальных идентификаторов, о которых я знаю, - около 20 миллионов, но с ним будет сложно работать с точки зрения ORM.
- одна таблица, в которой будут храниться только уникальные идентификаторы, например:
id - целое число
unique_identifier - текст,
одна таблица, в которой будут храниться только сайты, например:
id - целое число
сайт - текст
и отношение один ко многим, например:
id - целое число,
unique_id - целое число (например, таблица с идентификаторами)
site_id - целое число (таблица fk to sites)
- другой подход будет иметь таблицу, которая хранит уникальные идентификаторы для каждого сайта
Итак, какой из них кажется более подходящим для долгосрочной перспективы?