Платформа 3V/Соединение с источником/Подключение к БД PostgreSQL
В платформе 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 }