API Firebird.conf (rus)

Текущая версия API 1.0.240924
See versions of this instruction in English Portuguese Spanish German  Russian

Как использовать API Калькулятора Конфигураций для Firebird

Для получения конфигурации с пользовательскими параметрами через API нужно выполнить следующие действия:

1) Зарегистрироваться

Необходимо зарегистрироваться на портале cc.ib-aid.com; Потребуется только рабочий email.

2) Получить пароль для API

Пароль для вызова API индивидуальный для каждого зарегистрированного пользователя. Он приведен на главной странице в виджете «Получение конфигурации Firebird через API».

3) Сформировать данные о сервере

Для генерации конфигурации Firebird необходимо передать данные о характеристиках сервера или ВМ в формате json.

Данные о характеристиках сервера или ВМ должны иметь следующий вид:


data = {
    "mailLogin": "test",
    "passApi": "testparol",
    "serverVersion": "fb3",
    "serverArchitecture": "Classic",
    "cores": 8,
    "countUsers": 100,
    "sizeDb": 100,
    "pageSize": 4096,
    "ram": 16,
    "nameMainDb": "mainВМ",
    "pathToMainDb": "c:/test/test.fdb",
    "osType": "Universal",
    "hwType": "Universal"
}
    

где

  • mailLogin - login для входа на портал, полученный при регистрации,
  • passApi - пароль для Api (см. Пункт 2)
  • serverVersion - версия сервера firebird или hqbird должна быть указана в следующем виде: fb+номер версии или hq+номер версии. Например, fb2.5 - для Firebird 2.5 сервера или hq5 -- для HQBird 5 сервера
  • serverArchitecture -- архитектура сервера. Параметр может принимать одно из значений: Classic, SuperClassic или SuperServer
  • cores --- количество ядер сервера. От 1 до 100;
  • countUsers - количество пользователей. Минимальное значение - 1, максимальное - 30000;
  • sizeDb -- размер базы данных;
  • pageSize --- установленный размер страницы. Значения могут быть 4096, 8192, 16384 или 32768;
  • ram -- RAM сервера. Минимальное значение - 4, максимальное --- 10000;
  • nameMainDb -- название основной базы данных. Длина строки не должна превышать 100 символов;
  • pathToMainDb -- путь к основной базе данных. Длина строки не должна превышать 200 символов;
  • osType -- название операционной системы, где используется сервер. Значение параметра может быть Windows, Linux или Universal; в версии API 1.0.240924 этот параметр всегда приводится к Universal.
  • hwType -- Параметр может принимать одно из значений: Hardware, Virtual или Universal; в версии API 1.0.240924 этот параметр всегда приводится к Universal.

4) Запросить API

Необходимо произвести вызов API

"https://cc.ib-aid.com/rest/clc/calculation-params"

5) Получить результаты

Результатом вызова будет JSON файл со следующими полями:

{ 'inputParameters': '', 'configurationFirebird': '', 'configurationDatabase': '', 'messageError': ''}

Пример можете посмотреть ниже.

6) Обработка ошибок

Если при получении данных возникла ошибка, она будет отображена в поле messageError:

{'inputParameters':'','configurationFirebird': '', 'configurationDatabase': '', 'messageError': 'Count of users is null. Please, set value.'}

7) Особенности указания параметров

Если параметр не участвует в расчете, то его значение будет проигнорировано. Можно опустить параметры, которые

В зависимости от версий и архитектур серверов меняется набор необходимых входных параметров:

  • Для серверов Firebird 2.5 и HQbird 2.5 Classic и SuperClassic достаточными параметрами являются ram, countUsers и pageSize,
  • Для 2.5 SuperServer не требуется заполнять параметры.
  • Для всех версий серверов 3.0, 4.0, 5.0 и архитектур Classic и SuperClassic необходимо указать ram, countUsers, cores и pageSize.
  • Для архитектуры SuperServer версий 3.0, 4.0, 5.0 требуется определить все параметры.

Примеры

Пример вызова API соединения на Python


import requests

URL = "https://cc.ib-aid.com"
URLEND="/rest/clc/calculation-params"

data={
    "mailLogin":"test",
    "passApi":"testpassword",
    "serverVersion":"fb3",
    "serverArchitecture":"Classic",
    "cores":8,
    "countUsers":10,
    "sizeDb":100,
    "pageSize":4096,
    "ram":16,
    "nameMainDb":"mainВD",
    "pathToMainDb":"c:/test/test.fdb",
    "osType":"Universal",
    "hwType":"Universal"
}
r = requests.post(URL+URLEND,json=data)
print(r.status_code)
print(r.json())
    

Пример вызова API на Java


package com.rest;
import java.io.Serializable;

public class ResultRest implements Serializable {

    private String configurationFirebird= "";
    private String configurationDatabase="";
    private String messageError="";
    private String inputParameters="";

    public String getInputParameters() {
        return inputParameters;
    }

    public String getConfigurationFirebird() {
        return configurationFirebird;
    }
    public String getConfigurationDatabase() {
        return configurationDatabase;
    }
    public String getMessageError() {
        return messageError;
    }
}

package com.rest;

import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
import org.json.simple.JSONObject;

public class CalculateRest {
    public static final String SERVER_URI = "https://cc.ib-aid.com";
    public static final String PUT_PARAMS = "/rest/clc/calculation-params";

    public static void main(String args[]){
        getCalcResult();
    }
    private static void getCalcResult() {
        try {
            RestTemplate restTemplate = new RestTemplate();
            JSONObject jobj = new JSONObject();
            jobj.put("serverArchitecture","classic");
            jobj.put("cores",1);
            jobj.put("countUsers",100);
            jobj.put("sizeDb",100);
            jobj.put("pageSize",4096);
            jobj.put("ram",200);
            jobj.put("serverVersion","fb2.5");
            jobj.put("nameMainDb","mainВD");
            jobj.put("pathToMainDb","c:/testdb/test.fdb");
            jobj.put("osType","Universal");
            jobj.put("hwType","Universal");
            jobj.put("mailLogin","test");
            jobj.put("passApi","testpassword");
            ResultRest y = restTemplate.postForObject(SERVER_URI+PUT_PARAMS,jobj,ResultRest.class);
            System.out.println(y.getInputParameters());
            System.out.println(y.getConfigurationFirebird());
            System.out.println(y.getConfigurationDatabase());
            System.out.println(y.getMessageError());

        } catch (HttpClientErrorException e) {
            // Handle HTTP client errors (4xx status codes)
            if (e.getStatusCode().is4xxClientError()) {
                System.err.println("Client error: " + e.getStatusCode() + " - " + e.getStatusText());
                System.err.println("Response Body: " + e.getResponseBodyAsString());
            } else {
                System.err.println("Unexpected HTTP status: " + e.getStatusCode());
            }
        } catch (Exception ex){
            System.err.println("An error occurred: " + ex.getMessage());
        }
    }
}
    

Пример полученной конфигурации


#{"mailLogin":"[email protected]","ram":16,"countUsers":100,"sizeDb":100,"cores":8,"pageSize":8192,"nameMainDb":"testdb","pathToMainDb":"c:\\test\\test.fdb"}

#Configuration for Firebird 3 (vanilla) Classic (64 bit)

ServerMode = Classic # Firebird Classic

DefaultDBCachePages = 2048

FileSystemCacheThreshold = 64K

TempCacheLimit = 32M

LockHashSlots = 65519 # slots

LockMemSize = 50M

MaxUnflushedWrites = -1

MaxUnflushedWriteTime = -1

WireCrypt = Enabled

RemoteServicePort = 3050

#authentication plugin setup

# Recommendation - use SELECT * FROM SEC$USERS
# to check that you have users for all plugins

AuthServer = Srp, Legacy_Auth

UserManager = Srp, Legacy_UserManager

#security database

security.db = $(dir_secDb)/security3.fdb

{
    RemoteAccess = false
    DefaultDbCachePages = 250
}
    

Поддержка

По всем вопросам использования калькулятора конфигураций пишите на [email protected]