Максимальное количество баз данных для одного экземпляра PostgreSQL 9

9

При разработке приложения для нескольких клиентов мы планируем использовать разные базы данных для каждого клиента. Но это может быть более 1000 клиентов (приложений).

Сможет ли PostgreSQL справиться с этим без проблем?

Кто-нибудь пробовал что-то подобное?

Примечание: 35 таблиц для каждой, в среднем до 3000 записей для каждой базы данных.

Juanin
источник

Ответы:

5

Я сам не пробовал, но есть и такие, кто есть. Здесь вы можете увидеть, что даже 10 000 баз данных работают без проблем на одном экземпляре. Вы также можете найти некоторые практические аспекты на ServerFault .

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

И, как последнее замечание: мы очень рады на этом сайте. Мы надеемся, что вы останетесь с нами надолго.

Dezso
источник
Спасибо за ваши комментарии. Да, одновременные соединения могут быть головной болью, но другой вариант - общая таблица для каждого приложения, невероятно более сложная (требуется перепрограммирование для приложения).
Хуанин
2

Звучит как грязная вещь с управленческой точки зрения. Как вы планируете делать резервные копии такого количества баз данных? со сценарием, который зацикливается, хотя каждый?

Если у вас нет действительно веской причины, почему бы просто не иметь одну базу данных, в которой структура спроектирована так, что все данные будут связаны с идентификатором клиента. Добавьте индексы / внешний ключ / первичные ключи на основе этого поля, чтобы обеспечить целостность данных.

Тогда вам просто нужно иметь предложение where во всех ваших запросах, чтобы получить доступ только к одному идентификатору клиента. Это будет намного проще в обслуживании и так же просто в разработке (потому что в любом случае вам нужно разрешить идентификацию клиента)

Адам Ф
источник
1
Это очень хороший и верный момент. Возможно, OP должен подумать об использовании схем и иметь только несколько таблиц в публичной схеме, доступных для соединения с таблицами в схеме частного клиента.
Франсуа Босолей
Спасибо, но этот вариант был отменен с самого начала. Это порт уже разработанного приложения, и изменить ВСЕ код на этом этапе не так тривиально. Но да, ежедневное управление более чем 100 базами данных будет ... интересно ... не так ли?
Хуанин
1
Переход от отдельных баз данных к отдельным схемам не должен подразумевать каких-либо существенных изменений в коде. В частности, вам не нужно ставить перед объектами их схемы, потому search_pathчто это делается для вас.
Даниэль Верите
Wal Архивация для резервного копирования будет иметь смысл здесь.
Jharwood
0

Есть люди, которые делают это, особенно для хостинга на общих серверах.

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

Я думаю, что в целом, подход с использованием нескольких дБ является более разумным, учитывая ваши комментарии.

Управление (как резервное копирование) станет интересным. Также я думаю, что в какой-то момент подключения к БД начнут занимать больше времени. Если вы используете pg_hba.conf для ограничения доступа (что вы и должны делать), это тоже станет головной болью, и вы, вероятно, захотите создать решение для создания этого файла для вас .....

Крис Траверс
источник
Я не вижу проблемы с pg_hba.conf. Наше приложение использует Ruby on Rails и переключает соединения для разных баз данных, но все время в одной и той же коробке Linux. говорите о проблемах параллелизма при доступе к файлу?
Хуанин
1
Нет, просто если вы хотите определить, какие базы данных могут быть доступны для каких хостов, это станет длинным файлом, и управление может стать немного раздражающим.
Крис Треверс
0

Я надеюсь, что эту ссылку лучше прочитать: 10 000 баз данных в кластере PostgreSQL от Jon Jensen, 2008.

Один отрывок:

Краткий ответ: Postgres 8.1 прекрасно справляется с 10 000 баз данных. \l в psql генерирует длинный список баз данных, конечно, но возвращает достаточно быстро. Специальное параллельное тестирование было в порядке. Выполнение запросов, вставок и т. Д. В отобранной вручную группе различных баз данных воспроизведения работало нормально, в том числе во время создания новых баз данных.

[...]

Фактическое ограничение на этой платформе [ Linux ext3 ] составляет, вероятно, 31995 баз данных, поскольку каждая база данных занимает подкаталог в базе данных / базе данных /, а файловая система ext3 имеет ограничение в 31998 подкаталогов на один каталог, исходя из своего ограничения в 32000 ссылок на инод.

user117336
источник
1
Ответы, которые содержат только ссылки, не очень полезны, потому что ссылки со временем становятся устаревшими. Пожалуйста, рассмотрите возможность добавления резюме того, на что вы ссылаетесь, в свой ответ.
mustaccio