Платформа 3V/Соединение с источником/Подключение к БД PostgreSQL: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
Строка 18: Строка 18:
 
| dbType || PostgreSQL
 
| dbType || PostgreSQL
 
|-
 
|-
| "connectionString" || строки подключения к внешней бд PostgreSQL, где Server - адрес бд, Port - номер порта для подключения (дополнительно необходимо проверить открыттие порта для подключения со стороны бд), User Id - id пользователя бд, Password - пароль, Database - название бд на сервере, Search Path=public, Timeout=120 (таймаут для соединения)
+
| "connectionString" || строки подключения к внешней бд PostgreSQL, где Server - адрес бд, Port - номер порта для подключения (дополнительно необходимо проверить открыттие порта для подключения со стороны бд), User Id - id пользователя бд, Password - пароль, Database - название бд на сервере, Search Path - путь для поиска схем, по умолчанию обычно указывается = Public, Timeout=120 (таймаут выполнения запроса для соединения)
 
|-
 
|-
 
| id|| id объекта подключения в репозитории платформы
 
| id|| id объекта подключения в репозитории платформы

Версия 13:56, 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 }