Является ли создание множества схем в H2 хорошей стратегией для сегментирования и повышения производительности?

В списке рассылки кто-то раскрыл следующую проблему:

  • У нас миллионы пользователей (от 1 до 5 МБ данных на пользователя)
  • Данные пользователя не имеют доступа к другим данным пользователя и не изменяют их.
  • Как мы можем реализовать сегментирование с использованием H2, сохраняя при этом производительность?

Другой ответил следующее:

  • Вы можете создать 1 схему для каждого пользователя
  • Преимущество в том, что пользовательские данные будут расположены в отдельных экземплярах таблицы.
  • Следовательно, это улучшит производительность при обновлении этих таблиц.

Мой вопрос:

  1. кто-нибудь пробовал это?
  2. Действительно ли это интересная стратегия для разделения данных и улучшения/сохранения производительности?

person Jérôme Verstrynge    schedule 18.08.2011    source источник


Ответы (1)


Если у вас есть миллионы пользователей и в среднем 2 МБ данных на пользователя, вы получите около 2 ТБ. Я думаю, что это слишком много для хранения в одном файле базы данных. С другой стороны, вы также не хотите использовать миллионы файлов базы данных.

Я бы использовал несколько баз данных, каждая из которых имела бы до 1000 пользователей (в зависимости от объема данных).

Затем вы можете либо создать несколько схем (но обратите внимание, что для H2 метаданные схемы хранятся в памяти), либо добавить столбец «userId» в каждую таблицу.

person Thomas Mueller    schedule 18.08.2011