Эквивалент SQL Server Private Synonym в Oracle

Использование: SQL Server 2016+

Oracle поддерживает как общедоступные, так и частные синонимы. Т.е. вы можете настроить синоним так, чтобы он был доступен для всех подключений или только для текущего подключения - например, временная таблица.

Я знаю, что SQL-сервер не поддерживает частные синонимы, но я ищу наиболее эффективные альтернативы.

В качестве примера структуры данных:

CREATE TABLE [dbo].[Session1] ([ID] [UNIQUEIDENTIFIER] NOT NULL, [Val1] [INT] NULL, [Val2] [INT] NULL);
GO

CREATE TABLE [dbo].[Session2] ([ID] [UNIQUEIDENTIFIER] NOT NULL, [Val1] [INT] NULL, [Val2] [INT] NULL);
GO

CREATE TABLE [dbo].[Session3] ([ID] [UNIQUEIDENTIFIER] NOT NULL, [Val1] [INT] NULL, [Val2] [INT] NULL);
GO

CREATE SYNONYM MySession FOR dbo.Session1;

NB. Это только пример, таблицы содержат много строк, и у нас есть клиенты с тысячами одновременных сеансов.

Теперь я мог получить доступ к Session1 таблице как MySession, но, к сожалению, так будет и любое другое соединение.

DECLARE @SessionID NVARCHAR(255)
,       @strSQL    NVARCHAR(MAX);

SET @SessionID = N'1';
SET @strSQL = 'SELECT * FROM dbo.Session' + @SessionID;

EXEC sp_executesql @stmt = @strSQL;

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

Мы также протестировали секционированные представления и таблицы, обе из которых имеют недостатки.

Исходя из предположения, что я не первый человек, использующий этот стиль структуры данных, я ищу несколько советов по дополнительным подходам, которые я, возможно, не рассмотрел. Есть ли другие варианты?


person Matthew Baker    schedule 03.04.2019    source источник
comment
Ты не первый. Найдите проект многопользовательской базы данных. У всех решений есть свои плюсы и минусы. См. stackoverflow.com/questions/2213006/.   -  person Dan Guzman    schedule 03.04.2019
comment
Привет, Дэн. Это хорошее чтение, и оно касается всех вариантов дизайна. На самом деле у нас есть дизайн с несколькими схемами (хотя мой пример этого не показывает). Со своей стороны я на самом деле больше смотрю на сторону прямого доступа к этому. Как лучше всего получить данные. +1 хотя за совет.   -  person Matthew Baker    schedule 03.04.2019