API Firebird.conf (es)

Versión actual de la API 1.0.240924
Vea las versiones de esta instrucción en Inglés Portugués Español Alemán Ruso

Cómo usar la API del Calculador de Configuración para Firebird SQL

Para obtener una configuración con parámetros personalizados a través de la API, debe realizar los siguientes pasos:

1) Registrarse

Debe registrarse en el portal cc.ib-aid.com; Solo se requiere un correo electrónico funcional.

2) Obtener la contraseña de la API

La contraseña de la llamada API es individual para cada usuario registrado. Se proporciona en la página principal en el widget "Obtener configuración de Firebird a través de la API".

3) Formar los datos del servidor

Para generar la configuración de Firebird, debe transmitir datos sobre las características del servidor o VM en formato json.

Los datos de las características del servidor o VM deben tener la siguiente forma:


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

donde

  • mailLogin - inicio de sesión para el acceso al portal, obtenido durante el registro,
  • passApi - contraseña para la API (ver Punto 2)
  • serverVersion - la versión del servidor firebird o hqbird debe especificarse de la siguiente manera: fb+número de versión o hq+número de versión. Por ejemplo, fb2.5 - para el servidor Firebird 2.5 o hq5 -- para el servidor HQBird 5
  • serverArchitecture -- arquitectura del servidor. El parámetro puede tomar uno de los valores: Classic, SuperClassic o SuperServer
  • cores --- número de núcleos del servidor. De 1 a 100;
  • countUsers - número de usuarios. Valor mínimo - 1, máximo - 30000;
  • sizeDb -- tamaño de la base de datos;
  • pageSize --- establecer el tamaño de la página. Los valores pueden ser 4096, 8192, 16384 o 32768;
  • ram -- RAM del servidor. Valor mínimo - 4, máximo --- 10000;
  • nameMainDb -- nombre de la base de datos principal. La longitud de la cadena no debe exceder los 100 caracteres;
  • pathToMainDb -- ruta a la base de datos principal. La longitud de la cadena no debe exceder los 200 caracteres;
  • osType -- nombre del sistema operativo donde se utiliza el servidor. El valor del parámetro puede ser Windows, Linux o Universal; en la versión de la API 1.0.240924 este parámetro siempre se establece como Universal.
  • hwType -- El parámetro puede tomar uno de los valores: Hardware, Virtual o Universal; en la versión de la API 1.0.240924 este parámetro siempre se establece como Universal.

4) Solicitar la API

Debe realizar una llamada API

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

5) Obtener los resultados

El resultado de la llamada será un archivo JSON con los siguientes campos:

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

Puedes ver un ejemplo a continuación.

6) Manejo de errores

Si ocurre un error al recibir los datos, se mostrará en el campo messageError:

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

7) Características de la especificación de parámetros

Si un parámetro no participa en el cálculo, su valor será ignorado. Puedes omitir parámetros que no se utilizan en los cálculos.

Dependiendo de las versiones y arquitecturas de los servidores, el conjunto de parámetros de entrada necesarios cambia:

  • Para los servidores Firebird 2.5 y HQbird 2.5 Classic y SuperClassic, los parámetros suficientes son ram, countUsers y pageSize,
  • Para el SuperServer 2.5, no es necesario llenar ningún parámetro.
  • Para todas las versiones de servidor 3.0, 4.0, 5.0 y arquitecturas Classic y SuperClassic, necesitas especificar ram, countUsers, cores y pageSize.
  • Para la arquitectura SuperServer de las versiones 3.0, 4.0, 5.0, todos los parámetros deben ser definidos.

Ejemplos

Ejemplo de llamada de conexión API en 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":"mainBD",
    "pathToMainDb":"c:/test/test.fdb",
    "osType":"Universal",
    "hwType":"Universal"
}
r = requests.post(URL+URLEND,json=data)
print(r.status_code)
print(r.json())
    

Ejemplo en 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","mainBD");
            jobj.put("pathToMainDb","c:/test/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());
        }
    }
}
    

Ejemplo de configuración obtenida


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

#Configuración para Firebird 3 (vanilla) Classic (64 bits)

ServerMode = Classic # Firebird Classic

DefaultDBCachePages = 2048

FileSystemCacheThreshold = 64K

TempCacheLimit = 32M

LockHashSlots = 65519 # slots

LockMemSize = 50M

MaxUnflushedWrites = -1

MaxUnflushedWriteTime = -1

WireCrypt = Enabled

RemoteServicePort = 3050

#configuración del plugin de autenticación

# Recomendación - use SELECT * FROM SEC$USERS
# para verificar que tiene usuarios para todos los plugins

AuthServer = Srp, Legacy_Auth

UserManager = Srp, Legacy_UserManager

#base de datos de seguridad

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

{
    RemoteAccess = false
    DefaultDbCachePages = 250
}
    

Soporte

Para todas las preguntas relacionadas con el uso del calculador de configuración, por favor escriba a [email protected]