Recopilación de datos
Para que nuestros productos sean siempre mejores, recogemos automáticamente los datos relativos a las estadísticas de uso de las aplicaciones 4D Server en funcionamiento. Los datos recogidos se transfieren sin ningún impacto en la experiencia del usuario. No se recopila información personal. For more information on 4D policy regarding personal data protection, please visit this page.
La sección siguiente lo explica:
- qué información se recoge,
- dónde se almacena la información y cuándo se envía a 4D,
- cómo desactivar la recopilación automática de datos en las aplicaciones integradas cliente/servidor.
Información recopilada
Los datos se recogen durante los siguientes eventos:
- inicio de la base de datos,
- cierre de base de datos,
- inicio del servidor web,
- uso de funciones específicas como php, open datastore, depurador remoto,
- conexión con el cliente,
- envío de recolección de datos.
También se recogen algunos datos a intervalos regulares.
| Datos | Tipo | Notas |
|---|---|---|
| appServer | Object | Objeto que contiene información sobre el servidor de aplicaciones |
| appServer.hits | Number | Número de peticiones de procesos internos |
| appServer.bytesIn | Number | Bytes received by internal processes |
| appServer.bytesOut | Number | Bytes sent by internal processes |
| appServer.executionTime | Number | Tiempo de ejecución de la CPU para procesos internos |
| cacheMissBytes | Object | Número de bytes perdidos de la caché |
| cacheMissCount | Object | Número de lecturas perdidas en la caché |
| cacheReadBytes | Object | Número de bytes leídos de la caché |
| cacheReadCount | Object | Número de lecturas en la caché |
| classUsage | Object | Número de instancias de ciertas clases de lenguaje |
| connectionSystems | Collection | Sistema operativo del cliente sin el número de compilación (entre paréntesis) y número de clientes que lo utilizan |
| databases[].cacheSize | Number | Tamaño de caché en bytes |
| databases[].externalDatastoreOpened | Number | Número de llamadas a Open datastore |
| databases[].id | Number | Database ID |
| databases[].internalDatastoreOpened | Number | Número de veces que un servidor externo abre el almacén de datos |
| databases[].maxConcurrent4DClients | Number | Maximum number of simultaneous 4D Client sessions (using a 4D Client license) over the collection interval |
| databases[].maxConcurrentRestSessions | Number | Maximum number of simultaneous REST sessions over the collection interval |
| databases[].maxConcurrentWebSessions | Number | Maximum number of simultaneous Web sessions (4DACTION and SOAP) over the collection interval |
| databases[].maximum4DClientConnections | Number | Número máximo de conexiones 4D Client al servidor |
| databases[].numberOfDistinctClients | Number | Distinct count of client persistent UUID seen over collection interval |
| databases[].numberOfFields | Number | Número de campos |
| databases[].numberOfKeepRecordSyncInfo | Number | Número de tablas con la opción "Activar la replicación" marcada |
| databases[].numberOfRecordsMax | Number | Número total de registros |
| databases[].numberOfTables | Number | Número de tablas |
| databases[].qodly.webforms | Number | Número de formularios web Qodly |
| databases[].remoteDebugger4DRemoteAttachments | Number | Número de adjuntos al depurador remoto desde un 4D remoto |
| databases[].remoteDebuggerQodlyAttachments | Number | Número de archivos adjuntos al depurador remoto de Qodly |
| databases[].remoteDebuggerVSCodeAttachments | Number | Número de archivos adjuntos al depurador remoto desde VS Code |
| databases[].structureHash | Text | |
| databases[].uniqueID | Texto (cadena con hash) | Identificador único asociado a la base de datos (Polinomio Rolling hash del nombre de la base) |
| databases[].uptime | Number | Time elapsed (in seconds) between two collection events |
| databases[].uuid | Text | Database UUID |
| databases[].webIPAddressesNumber | Number | Número de direcciones IP diferentes que hicieron una petición a 4D Server |
| databases[].webMaxScalableSessions | Number | Número máximo de sesiones escalables en el servidor |
| databases[].webScalableSessions | Boolean | True si las sesiones escalables están activadas |
| dataSegment1.diskReadBytes | Object | Número de bytes leídos en el archivo de datos |
| dataSegment1.diskReadCount | Object | Número de lecturas en el archivo de datos |
| dataSegment1.diskWriteBytes | Object | Número de bytes escritos en el archivo de datos |
| dataSegment1.diskWriteCount | Object | Número de escrituras en el archivo de datos |
| dataSize | Number | Tamaño del archivo de datos en bytes |
| dbServer | Object | Objeto que contiene información sobre el servidor DB4D |
| dbServer.hits | Number | Número de peticiones de procesos internos |
| dbServer.bytesIn | Number | Bytes received by internal processes |
| dbServer.bytesOut | Number | Bytes sent by internal processes |
| dbServer.executionTime | Number | Tiempo de ejecución de la CPU para procesos internos |
| encryptedConnections | Boolean | True si las conexiones cliente/servidor están encriptadas |
| externalPHP | Boolean | True si el cliente realiza una llamada a PHP execute y utiliza su propia versión de php |
| general.buildNumber | Number | Número de build de la aplicación 4D |
| general.headless | Boolean | True si la aplicación se ejecuta en modo sin interfaz |
| general.isRosetta | Boolean | True si 4D es emulado a través de Rosetta en macOS, False en caso contrario (no emulado o en Windows). |
| general.license | Object | Nombre comercial y descripción de las licencias de los productos |
| general.uniqueID | Text | ID único de 4D Server |
| general.version | Text | Número de versión de la aplicación 4D |
| hasDataChangeTracking | Boolean | True si existe una tabla "__DeletedRecords |
| indexSegment.diskReadBytes | Number | Número de bytes leídos en el archivo índice |
| indexSegment.diskReadCount | Number | Número de lecturas en el archivo índice |
| indexSegment.diskWriteBytes | Number | Número de bytes escritos en el archivo índice |
| indexSegment.diskWriteCount | Number | Número de escrituras en el archivo índice |
| indexSize | Number | Tamaño del índice en bytes |
| isCompiled | Boolean | True si la aplicación está compilada |
| isEncrypted | Boolean | True si el archivo de datos está encriptado |
| isEngined | Boolean | True si la aplicación se fusiona con 4D Volume Desktop |
| isProjectMode | Boolean | True si la aplicación es un proyecto |
| LDAPLogin | Number | Número de llamadas a LDAP LOGIN |
| license.sffPrimaryKey | Number | Server master product number |
| machine.CPU | Text | Nombre, tipo y velocidad del procesador |
| machine.memory | Number | Volumen de almacenamiento de memoria (en bytes) disponible en la máquina |
| machine.numberOfCores | Number | Número total de núcleos |
| machine.system | Text | Versión del sistema operativo y número de build |
| maximumNumberOfWebProcesses | Number | Número máximo de procesos web simultáneos |
| maximumUsedPhysicalMemory | Number | Uso máximo de la memoria física |
| maximumUsedVirtualMemory | Number | Uso máximo de la memoria virtual |
| mobile | Collection | Información sobre sesiones móviles |
| numberOfWebServices | Number | Número de métodos publicados como servicios web |
| ODBCLogin | Number | Número de llamadas a SQL LOGIN utilizando ODBC |
| phpCall | Number | Número de llamadas a PHP execute |
| QueryBySQL | Number | Número de llamadas a QUERY BY SQL |
| restServer | Object | Objeto que contiene información del servidor REST |
| restServer.bytesIn | Number | Bytes received by the REST server |
| restServer.bytesOut | Number | Bytes sent by the REST server |
| restServer.hits | Number | Number of hits on the REST server |
| restServer.executionTime | Number | Tiempo de ejecución de la CPU para el servidor REST WEB |
| soapServer | Object | Objeto que contiene información sobre el servidor SOAP |
| soapServer.bytesIn | Number | Bytes received by the SOAP server |
| soapServer.bytesOut | Number | Bytes sent by the SOAP server |
| soapServer.hits | Number | Number of hits on the SOAP server |
| soapServer.executionTime | Number | Tiempo de ejecución de la CPU para el servidor SOAP |
| SQLBeginEndStatement | Number | Número de usos de "Begin SQL" / "End SQL" |
| SQLLoginInternal | Number | Número de llamadas a SQL LOGIN utilizando SQL_INTERNAL |
| sqlServer | Object | Objeto que contiene información del servidor SQL |
| sqlServer.hits | Number | Número de consultas SQL ejecutadas |
| sqlServer.bytesIn | Number | Bytes received by the SQL engine |
| sqlServer.bytesOut | Number | Bytes sent by the SQL engine |
| sqlServer.executionTime | Number | Tiempo de ejecución de la CPU para consultas SQL |
| usingQUICNetworkLayer | Boolean | True si la base utiliza la capa de red QUIC |
| totalExecutionTime | Number | Tiempo total de ejecución de la CPU: suma de todos los tipos de peticiones |
| totalRequests | Number | Total requests: sum of web, REST, SOAP, SQL, and internal traffic |
| webServer | Object | Objeto que contiene información sobre el servidor web |
| webServer.bytesIn | Number | Bytes received by the Web server |
| webServer.bytesOut | Number | Bytes sent by the Web server |
| webServer.hits | Number | Number of hits on the Web server |
| webServer.executionTime | Number | Tiempo de ejecución de la CPU para el servidor Web |
| webStaticServer | Object | Objeto que contiene la información estática del servidor web |
| webStaticServer.bytesIn | Number | Bytes recibidos por el servidor Web estático |
| webStaticServer.bytesOut | Number | Bytes enviados por el servidor Web estático |
| webStaticServer.hits | Number | Número de visitas al servidor Web estático |
| webStaticServer.executionTime | Number | Tiempo de ejecución de la CPU para el servidor Web estático |
¿Dónde se almacena y envía?
Los datos recolectados se escriben en un archivo de texto (formato JSON) por base de datos cuando 4D Server cierra. El archivo se guarda dentro de la carpeta activa de 4D, es decir:
- en Windows:
Users\[userName]\AppData\Roaming\4D Server - en macOS:
/Users/[userName]/Library/ApplicationSupport/4D Server
Una vez a la semana, el archivo se envía automáticamente por la red a 4D. A continuación, el archivo se elimina de la carpeta activa de 4D.

Si el archivo no ha podido ser enviado por alguna razón, no obstante se elimina y no se muestra ningún mensaje de error del lado de 4D Server.
El archivo se envía a la siguiente dirección del servidor: https://dcollector.4d.com (ip: 195.68.52.83).
Desactivar la recopilación de datos en las aplicaciones cliente/servidor integradas
Puede desactivar la recolección automática de datos en aplicaciones integradas cliente/servidor.
Para desactivar la colección, pase el valor False a la llave ServerDataCollection en el archivo buildApp.4DSettings, utilizado para crear la aplicación cliente/servidor.