должна в ней создать кучку таблиц. Для удобства я ставлю SET search_path.... Вопрос, search_path, надеюсь, устанавливается только для данной процедуры? Ничего не случится при параллельной работе функции с другим запросом?
Если не секрет, а для чего потребовалось "создаёт схему, и должна в ней создать кучку таблиц"? Не переизобретаете ли вы миграции?
Если параллельно — нет. А вот потом в том жэ процэссе... Кажэтся, rollback (во всех видах, включая отловленные исключения PL/PgSQL) это отменяет. В остальных случаях оно так дальшэ и останется.
Благодарю. Ладно, на всякий буду генерировать строку запроса и указывать название таблицы со схемой, без set
Ну почти. Это мелкая финансовая система для разных клиентов. Думал хранить ли транзакции в одной таблице с ид клиента или сделать каждому свой namespace. Вот пошел по второму пути. При регистрации клиента ему создаётся свой набор таблиц.
а если генерация схемы совпадет с существующей? как делать аналитику? например ответ на вопрос сколько должны клиенты или их активы, я не знаю специфики вашего ПО.
Не понял первый вопрос. А аналитика-то как страдает? Организация хранит всю информацию в своём namespace, вся аналитика по своим таблицам. Другая - в своём. У другой свои данные.
т.е. у вас нет своей внутренней аналитики, где вы обрабатываете и агрегируете данные? простой пример есть ОФД с чеками для каждого клиента, но у них есть своя аналитика для анализа по всем клиентам.
Нет, всяких кросс-отчётов нет. Чисто изолированное пространство имён и всё. Максимум - это отчёт по количеству этих NS, но это в отдельном месте.
а не упретесь в просадку когда условно кол-во клиентов будет млн, это же дает нагрузку на системные таблицы?
Когда клиентов будет миллион, довольно легко перелезть на другую архитектуру. Например тупо добавить ещё один независимый инстант БД. Можно ещё одну БД. Короче, не глобальная переделка. Но у меня по расчётам количество клиентов измеряется десятками, даже не сотня.
последний вопрос, почему тогда не сделать по БД на клиента?
При коннекте микросервиса к БД дешевле иметь пул открытых коннектов и не переключаться между БД в процессе обработки запросов.
еще раз спасибо за пояснения.
Обсуждают сегодня