Платформа 3V/Соединение с источником/Подключение к БД PostgreSQL: различия между версиями
(Новая страница: «страница ожидает разработки») |
Il.iashin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | + | В платформе 3v возможно подключаться к внешним бд PostgreSQL, через создания объекта репозитория Соединение, настройки его через json и использование его внутри справочников платформы. Для подключения к внешним бд PostgreSQL возможно настроить соединение следующего вида: | |
+ | |||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | { | ||
+ | "dbType": "PostgreSQL", | ||
+ | "connectionString": "Server=my_db_adress;Port=5432;User Id=postgres;Password=postgres;Database=test;Search Path=public;Timeout=120;", | ||
+ | "id": 70000, | ||
+ | "name": "Соединение с БД PostgreSQL" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | После создания соединения возможно создать справочник, который будет ссылаться на данное соединение. Справочник доступен на чтение. | ||
+ | ===== Структура схемы соединения типа "Link" ===== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Ключ!! Значение или описание значения | ||
+ | |- | ||
+ | | dbType || PostgreSQL | ||
+ | |- | ||
+ | | "connectionString" || строки подключения к внешней бд PostgreSQL, где Server - адрес бд, Port - номер порта для подключения (дополнительно необходимо проверить открыттие порта для подключения со стороны бд), User Id - id пользователя бд, Password - пароль, Database - название бд на сервере, Search Path=public, Timeout=120 (таймаут для соединения) | ||
+ | |- | ||
+ | | id|| id объекта подключения в репозитории платформы | ||
+ | |- | ||
+ | | name|| наименование подключения | ||
+ | |- | ||
+ | |} | ||
+ | ===== Пример подключения к внешней БД PostgreSQL===== | ||
+ | В дальнейшем можно использовать данное соединение на чтение внутри структуры обычных справочников, например создадим подключение к тестовой бд, посвященной исследованиям РНК https://rnacentral.org/help/public-database и попробуем добавить данные из одной ее таблицы в справочник на платформу. | ||
+ | Соединение: https://study.3v-cloud.com/navigator/#/home?objectId=852 | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | { | ||
+ | "dbType": "PostgreSQL", | ||
+ | "connectionString": "Server=hh-pgsql-public.ebi.ac.uk;Port=5432;User Id=reader;Password=NWDMCE5xdipIjRrp;Database=pfmegrnargs;Search Path=rnacen;Timeout=120;", | ||
+ | "id": 852, | ||
+ | "name": "hh-pgsql-public.ebi.ac.uk" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Справочник: https://study.3v-cloud.com/navigator/#/home?objectId=853, в который добавим пару атрибутов из бд и укажем, что он внешний. <br> | ||
+ | Мы создали структуру справочника, и добавили через json данные об атрибутах внешней таблицы бд, не забыв прописать "isDataSourceExternal": true (отмечая справочник внешним источником) и "limit": 100 для ограничения числа данных. | ||
+ | |||
+ | Пример структуры: | ||
+ | |||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | { | ||
+ | "disableCache": false, | ||
+ | "cacheSettings": { | ||
+ | "expirationMinutes": null | ||
+ | }, | ||
+ | "discriminator": "TableDictionary", | ||
+ | "dictionaryStructure": { | ||
+ | "id": 853, | ||
+ | "name": "Новый справочник", | ||
+ | "code": "New_Dictionary_2339", | ||
+ | "description": null, | ||
+ | "type": "TableDictionary", | ||
+ | "tableName": "qa_status", | ||
+ | "sequenceName": "", | ||
+ | "databaseId": 852, | ||
+ | "attributes": [ | ||
+ | { | ||
+ | "id": 1, | ||
+ | "name": "Идентификатор", | ||
+ | "code": "taxid", | ||
+ | "description": "", | ||
+ | "dataType": "Integer", | ||
+ | "type": "Id", | ||
+ | "isNullable": false, | ||
+ | "hasMultipleValues": false, | ||
+ | "isVisible": false, | ||
+ | "isReadOnly": true, | ||
+ | "tableName": "", | ||
+ | "identIndex": { | ||
+ | "code": null, | ||
+ | "isUnique": false, | ||
+ | "dbIndexName": null, | ||
+ | "fields": [], | ||
+ | "isNew": true | ||
+ | }, | ||
+ | "referenceIndex": { | ||
+ | "code": null, | ||
+ | "isUnique": false, | ||
+ | "dbIndexName": null, | ||
+ | "fields": [], | ||
+ | "isNew": true | ||
+ | }, | ||
+ | "defaultValue": -1, | ||
+ | "defaultValueExpression": null, | ||
+ | "component": null, | ||
+ | "parentAttributeId": null, | ||
+ | "locale": null | ||
+ | }, | ||
+ | { | ||
+ | "id": 31, | ||
+ | "name": "upi", | ||
+ | "code": "upi", | ||
+ | "description": "", | ||
+ | "dataType": "String", | ||
+ | "type": "Custom", | ||
+ | "isNullable": true, | ||
+ | "hasMultipleValues": false, | ||
+ | "isVisible": false, | ||
+ | "isReadOnly": true, | ||
+ | "tableName": "", | ||
+ | "identIndex": { | ||
+ | "code": null, | ||
+ | "isUnique": false, | ||
+ | "dbIndexName": null, | ||
+ | "fields": [], | ||
+ | "isNew": true | ||
+ | }, | ||
+ | "referenceIndex": { | ||
+ | "code": null, | ||
+ | "isUnique": false, | ||
+ | "dbIndexName": null, | ||
+ | "fields": [], | ||
+ | "isNew": true | ||
+ | }, | ||
+ | "defaultValue": -1, | ||
+ | "defaultValueExpression": null, | ||
+ | "component": null, | ||
+ | "parentAttributeId": null, | ||
+ | "locale": null | ||
+ | } | ||
+ | ], | ||
+ | "indexes": [ | ||
+ | { | ||
+ | "code": "primary_key", | ||
+ | "isUnique": true, | ||
+ | "dbIndexName": null, | ||
+ | "fields": [ | ||
+ | "ID" | ||
+ | ], | ||
+ | "isNew": true | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "id": 853, | ||
+ | "name": "Новый справочник", | ||
+ | "code": "New_Dictionary_2339", | ||
+ | "description": null, | ||
+ | "dictionaryType": "TableDictionary", | ||
+ | "tableName": "qa_status", | ||
+ | "isHistoryEnabled": false, | ||
+ | "databaseId": 852, | ||
+ | "isAccessRightsEnabled": false, | ||
+ | "viewOptions": { | ||
+ | "limit": 100, | ||
+ | "filteringAttributes": [], | ||
+ | "filtersJoin": "And", | ||
+ | "disableRefreshWhenParameterChanged": false, | ||
+ | "gridComponent": null | ||
+ | }, | ||
+ | "isDataSourceExternal": true, | ||
+ | "isNotifyEnable": false | ||
+ | } | ||
+ | </syntaxhighlight> |
Версия 13:17, 22 ноября 2021
В платформе 3v возможно подключаться к внешним бд PostgreSQL, через создания объекта репозитория Соединение, настройки его через json и использование его внутри справочников платформы. Для подключения к внешним бд PostgreSQL возможно настроить соединение следующего вида:
1 {
2 "dbType": "PostgreSQL",
3 "connectionString": "Server=my_db_adress;Port=5432;User Id=postgres;Password=postgres;Database=test;Search Path=public;Timeout=120;",
4 "id": 70000,
5 "name": "Соединение с БД PostgreSQL"
6 }
После создания соединения возможно создать справочник, который будет ссылаться на данное соединение. Справочник доступен на чтение.
Структура схемы соединения типа "Link"
Ключ | Значение или описание значения |
---|---|
dbType | PostgreSQL |
"connectionString" | строки подключения к внешней бд PostgreSQL, где Server - адрес бд, Port - номер порта для подключения (дополнительно необходимо проверить открыттие порта для подключения со стороны бд), User Id - id пользователя бд, Password - пароль, Database - название бд на сервере, Search Path=public, Timeout=120 (таймаут для соединения) |
id | id объекта подключения в репозитории платформы |
name | наименование подключения |
Пример подключения к внешней БД PostgreSQL
В дальнейшем можно использовать данное соединение на чтение внутри структуры обычных справочников, например создадим подключение к тестовой бд, посвященной исследованиям РНК https://rnacentral.org/help/public-database и попробуем добавить данные из одной ее таблицы в справочник на платформу. Соединение: https://study.3v-cloud.com/navigator/#/home?objectId=852
1 {
2 "dbType": "PostgreSQL",
3 "connectionString": "Server=hh-pgsql-public.ebi.ac.uk;Port=5432;User Id=reader;Password=NWDMCE5xdipIjRrp;Database=pfmegrnargs;Search Path=rnacen;Timeout=120;",
4 "id": 852,
5 "name": "hh-pgsql-public.ebi.ac.uk"
6 }
Справочник: https://study.3v-cloud.com/navigator/#/home?objectId=853, в который добавим пару атрибутов из бд и укажем, что он внешний.
Мы создали структуру справочника, и добавили через json данные об атрибутах внешней таблицы бд, не забыв прописать "isDataSourceExternal": true (отмечая справочник внешним источником) и "limit": 100 для ограничения числа данных.
Пример структуры:
1 {
2 "disableCache": false,
3 "cacheSettings": {
4 "expirationMinutes": null
5 },
6 "discriminator": "TableDictionary",
7 "dictionaryStructure": {
8 "id": 853,
9 "name": "Новый справочник",
10 "code": "New_Dictionary_2339",
11 "description": null,
12 "type": "TableDictionary",
13 "tableName": "qa_status",
14 "sequenceName": "",
15 "databaseId": 852,
16 "attributes": [
17 {
18 "id": 1,
19 "name": "Идентификатор",
20 "code": "taxid",
21 "description": "",
22 "dataType": "Integer",
23 "type": "Id",
24 "isNullable": false,
25 "hasMultipleValues": false,
26 "isVisible": false,
27 "isReadOnly": true,
28 "tableName": "",
29 "identIndex": {
30 "code": null,
31 "isUnique": false,
32 "dbIndexName": null,
33 "fields": [],
34 "isNew": true
35 },
36 "referenceIndex": {
37 "code": null,
38 "isUnique": false,
39 "dbIndexName": null,
40 "fields": [],
41 "isNew": true
42 },
43 "defaultValue": -1,
44 "defaultValueExpression": null,
45 "component": null,
46 "parentAttributeId": null,
47 "locale": null
48 },
49 {
50 "id": 31,
51 "name": "upi",
52 "code": "upi",
53 "description": "",
54 "dataType": "String",
55 "type": "Custom",
56 "isNullable": true,
57 "hasMultipleValues": false,
58 "isVisible": false,
59 "isReadOnly": true,
60 "tableName": "",
61 "identIndex": {
62 "code": null,
63 "isUnique": false,
64 "dbIndexName": null,
65 "fields": [],
66 "isNew": true
67 },
68 "referenceIndex": {
69 "code": null,
70 "isUnique": false,
71 "dbIndexName": null,
72 "fields": [],
73 "isNew": true
74 },
75 "defaultValue": -1,
76 "defaultValueExpression": null,
77 "component": null,
78 "parentAttributeId": null,
79 "locale": null
80 }
81 ],
82 "indexes": [
83 {
84 "code": "primary_key",
85 "isUnique": true,
86 "dbIndexName": null,
87 "fields": [
88 "ID"
89 ],
90 "isNew": true
91 }
92 ]
93 },
94 "id": 853,
95 "name": "Новый справочник",
96 "code": "New_Dictionary_2339",
97 "description": null,
98 "dictionaryType": "TableDictionary",
99 "tableName": "qa_status",
100 "isHistoryEnabled": false,
101 "databaseId": 852,
102 "isAccessRightsEnabled": false,
103 "viewOptions": {
104 "limit": 100,
105 "filteringAttributes": [],
106 "filtersJoin": "And",
107 "disableRefreshWhenParameterChanged": false,
108 "gridComponent": null
109 },
110 "isDataSourceExternal": true,
111 "isNotifyEnable": false
112 }