Тип таблицы ПРОКСИ
Таблица типа PROXY — это таблица, которая получает доступ к данным другой таблицы или представления и считывает их. Например, чтобы создать таблицу, основанную на таблице FIX boys:
create table xboy engine=connect table_type=PROXY tabname=boys;
Проще говоря, PROXY — это тип по умолчанию, когда указан TABNAME.
create table xboy engine=connect tabname=boys;
Поскольку таблица boys может использоваться напрямую, зачем нужен прокси-таблица? В основном она используется внутри других типов таблиц, таких как TBL, XCOL, OCCUR или PIVOT. Конечно, таблицы типа ПРОКСИ — это таблицы CONNECT, что означает, что они могут быть основаны на таблицах любых движков и доступны для типов таблиц, которым требуется доступ к таблицам CONNECT.
Прокси на не-CONNECT-таблицах
Когда подтаблица является представлением или не является таблицей CONNECT, CONNECT внутри создает временную таблицу CONNECT типа MYSQL для доступа к ней. Эта связь использует те же параметры по умолчанию, что и для таблицы MYSQL. Также можно указать их для таблицы PROXY с помощью PROXY объявления, используя те же параметры OPTION_LIST , что и для таблицы MYSQL. Конечно, в этом случае проще и естественнее использовать напрямую тип MYSQL.
Обычно параметры по умолчанию должны позволить таблице PROXY повторно подключиться к серверу. Однако проблема возникает, когда текущий пользователь вошел в систему с паролем. Протокол безопасности не позволяет CONNECT получить этот пароль и требует, чтобы он был указан в операторе создания таблицы PROXY. Например, добавив:
... option_list='Password=mypass';
Однако часто не рекомендуется писать пароль открытым текстом, который может увидеть любой пользователь, имеющий возможность просмотреть объявление таблицы с помощью команды show create table, особенно если таблица используется, когда текущий пользователь — root. Чтобы избежать этого, должен быть создан специальный пользователь на локальном хосте, который будет использоваться прокси-таблицами для получения локальных таблиц. У этого пользователя могут быть минимальные права, например, SELECT в нужных каталогах, и ему не нужен пароль. Предположим, что «proxy» — такой пользователь, список параметров для добавления будет:
... option_list='user=proxy';
Использование таблицы ПРОКСИ в качестве представления
Таблица типа PROXY также может использоваться сама для изменения способа просмотра таблицы. Например, прокси-таблица не использует индексы таблицы-объекта. Также можно определить её столбцы с другими именами или типом, использовать только некоторые из них или изменить их порядок. Например:
create table city ( city varchar(11), boy char(12) flag=1, birth date) engine=CONNECT tabname=boys; select * from city;
Это отобразит:
| city | boy | birth |
|---|---|---|
| Boston | John | 1986-01-25 |
| Boston | Henry | 1987-06-07 |
| San Jose | George | 1981-08-10 |
| Chicago | Sam | 1979-11-22 |
| Dallas | James | 1992-05-13 |
| Boston | Bill | 1986-09-11 |
Здесь нам не нужно было указывать формат столбца или смещение, так как данные извлекаются из таблицы boys, а не непосредственно из файла boys.txt. Флаг параметра столбца boy указывает, что он соответствует первому столбцу таблицы boys, столбцу name.
Избежание цикла в таблице ПРОКСИ
CONNECT может проверить, ссылается ли таблица типа PROXY, или основанная на PROXY, напрямую или косвенно на себя. Если прямую ссылку можно проверить при создании таблицы, то косвенную ссылку можно проверить только при выполнении запроса к таблице. Однако это возможно только для локальных таблиц. При использовании удаленных таблиц или представлений может возникнуть проблема, если удаленная таблица или представление ссылаются на одну из локальных таблиц цепочки. Следует соблюдать ту же осторожность, что и при использовании таблиц FEDERATEDX.
Примечание: Все таблицы типа PROXY или основанные на PROXY, в этой версии являются только для чтения.
Изменение операций
Все операции INSERT / UPDATE / DELETE могут использоваться с прокси-таблицами. Однако те же ограничения, которые применяются к исходной таблице, также применяются к прокси-таблице.
Примечание: все типы таблиц ПРОКСИ и основанные на ПРОКСИ не индексируются.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/connect-proxy-table-type/