Collecte des données
Pour nous aider à améliorer sans cesse nos produits, nous collectons automatiquement des données concernant les statistiques d'utilisation des applications 4D Server. Les données collectées sont transférées sans incidence sur l'expérience utilisateur. Aucune information personnelle n'est collectée. Pour plus d'informations sur la politique de 4D en matière de protection des données personnelles, veuillez consulter cette page.
La section ci-dessous explique :
- quelles sont les informations collectées,
- où les informations sont stockées et quand elles sont envoyées à 4D,
- comment désactiver la collecte automatique de données dans les applications client/serveur générées.
Informations collectées
Les données sont collectées lors des événements suivants :
- démarrage de la base de données,
- fermeture de la base de données,
- démarrage du serveur web,
- utilisation de fonctions spécifiques telles que php, open datastore, débogueur distant,
- connexion client,
- envoi de la collecte de données.
Certaines données sont également collectées à intervalles réguliers.
| Data | Type | Notes |
|---|---|---|
| appServer | Object | Objet contenant des informations sur le serveur d'application |
| appServer.hits | Number | Nombre de requêtes provenant de process internes |
| appServer.bytesIn | Number | Octets reçus par des process internes |
| appServer.bytesOut | Number | Octets envoyés par des process internes |
| appServer.executionTime | Number | Temps d'exécution CPU pour les process internes |
| cacheMissBytes | Object | Nombre d'octets manqués dans le cache |
| cacheMissCount | Object | Nombre de lectures manquées dans le cache |
| cacheReadBytes | Object | Nombre d'octets lus à partir de la mémoire cache |
| cacheReadCount | Object | Nombre de lectures dans le cache |
| classUsage | Object | Nombre d'instances de certaines classes du langage |
| connectionSystems | Collection | Système d'exploitation du client sans le numéro de build (entre parenthèses) et nombre de clients qui l'utilisent |
| databases[].cacheSize | Number | Taille du cache en octets |
| databases[].externalDatastoreOpened | Number | Nombre d'appels à Open datastore |
| databases[].id | Number | ID de la base de données |
| databases[].internalDatastoreOpened | Number | Nombre de fois où le datastore est ouvert par un serveur externe |
| databases[].maxConcurrent4DClients | Number | Nombre maximum de sessions 4D Client simultanées (utilisant une licence 4D Client) sur l'intervalle de collecte |
| databases[].maxConcurrentRestSessions | Number | Nombre maximal de sessions REST simultanées sur l'intervalle de collecte |
| databases[].maxConcurrentWebSessions | Number | Nombre maximal de sessions Web simultanées (4DACTION et SOAP) sur l'intervalle de collecte |
| databases[].maximum4DClientConnections | Number | Nombre maximal de connexions de 4D Client au serveur |
| databases[].numberOfDistinctClients | Number | Nombre distinct d'UUID persistants de clients sur l'intervalle de collecte |
| databases[].numberOfFields | Number | Nombre de champs |
| databases[].numberOfKeepRecordSyncInfo | Number | Nombre de tables dont l'option "Activer la réplication" est cochée |
| databases[].numberOfRecordsMax | Number | Nombre total d'enregistrements |
| databases[].numberOfTables | Number | Nombre de tables |
| databases[].qodly.webforms | Number | Nombre de webforms Qodly |
| databases[].remoteDebugger4DRemoteAttachments | Number | Nombre de rattachements au débogueur distant à partir d'un 4D distant |
| databases[].remoteDebuggerQodlyAttachments | Number | Nombre de rattachements au débogueur distant à partir de Qodly |
| databases[].remoteDebuggerVSCodeAttachments | Number | Nombre de rattachements au débogueur distant à partir de VS Code |
| databases[].structureHash | Text | |
| databases[].uniqueID | Texte (chaîne hachée) | Identifiant unique associé à la base de données (Hachage par roulement polynomial du nom de la base de données) |
| databases[].uptime | Number | Temps écoulé (en secondes) entre deux événements de collecte |
| databases[].uuid | Text | UUID de la base de données |
| databases[].webIPAddressesNumber | Number | Nombre d'adresses IP différentes ayant adressé une requête à 4D Server |
| databases[].webMaxScalableSessions | Number | Nombre maximal de sessions évolutives sur le serveur |
| databases[].webScalableSessions | Boolean | Vrai si les sessions évolutives sont activées |
| dataSegment1.diskReadBytes | Object | Nombre d'octets lus dans le fichier de données |
| dataSegment1.diskReadCount | Object | Nombre de lectures dans le fichier de données |
| dataSegment1.diskWriteBytes | Object | Nombre d'octets écrits dans le fichier de données |
| dataSegment1.diskWriteCount | Object | Nombre d'écritures dans le fichier de données |
| dataSize | Number | Taille du fichier de données en octets |
| dbServer | Object | Objet contenant des informations sur le serveur DB4D |
| dbServer.hits | Number | Nombre de requêtes provenant de process internes |
| dbServer.bytesIn | Number | Octets reçus par des process internes |
| dbServer.bytesOut | Number | Octets envoyés par des process internes |
| dbServer.executionTime | Number | Temps d'exécution CPU pour les process internes |
| encryptedConnections | Boolean | True si les connexions client/serveur sont cryptées |
| externalPHP | Boolean | True si le client effectue un appel à PHP execute et utilise sa propre version de php |
| general.buildNumber | Number | Numéro de build de l'application 4D |
| general.headless | Boolean | True si l'application fonctionne en mode headless |
| general.isRosetta | Boolean | True si 4D est émulé par Rosetta sous macOS, False sinon (non émulé ou sous Windows). |
| general.license | Object | Nom commercial et description des licences des produits |
| general.uniqueID | Text | ID unique du serveur 4D |
| general.version | Text | Numéro de version de l'application 4D |
| hasDataChangeTracking | Boolean | True si une table "__DeletedRecords" existe |
| indexSegment.diskReadBytes | Number | Nombre d'octets lus dans le fichier d'index |
| indexSegment.diskReadCount | Number | Nombre de lectures dans le fichier d'index |
| indexSegment.diskWriteBytes | Number | Nombre d'octets écrits dans le fichier d'index |
| indexSegment.diskWriteCount | Number | Nombre d'écritures dans le fichier d'index |
| indexSize | Number | Taille des index en octets |
| isCompiled | Boolean | True si l'application est compilée |
| isEncrypted | Boolean | Vrai si le fichier de données est chiffré |
| isEngined | Boolean | True si l'application est fusionnée avec 4D Volume Desktop |
| isProjectMode | Boolean | True si l'application est un projet |
| LDAPLogin | Number | Nombre d'appels à la fonction LDAP LOGIN |
| license.sffPrimaryKey | Number | Numéro de produit du serveur principal |
| machine.CPU | Text | Nom, type et vitesse du processeur |
| machine.memory | Number | Taille de la mémoire (en octets) disponible sur la machine |
| machine.numberOfCores | Number | Nombre total de cœurs |
| machine.system | Text | Version du système d'exploitation et numéro de version |
| maximumNumberOfWebProcesses | Number | Nombre maximal de process web simultanés |
| maximumUsedPhysicalMemory | Number | Utilisation maximale de la mémoire physique |
| maximumUsedVirtualMemory | Number | Utilisation maximale de la mémoire virtuelle |
| mobile | Collection | Informations sur les sessions mobiles |
| numberOfWebServices | Number | Nombre de méthodes publiées en tant que Services Web |
| ODBCLogin | Number | Nombre d'appels à SQL LOGIN utilisant ODBC |
| phpCall | Number | Nombre d'appels à PHP execute |
| QueryBySQL | Number | Nombre d'appels à QUERY BY SQL |
| restServer | Object | Objet contenant des informations sur le serveur REST |
| restServer.bytesIn | Number | Octets reçus par le serveur REST |
| restServer.bytesOut | Number | Octets envoyés par le serveur REST |
| restServer.hits | Number | Nombre de hits du serveur REST |
| restServer.executionTime | Number | Temps d'exécution CPU du serveur WEB REST |
| soapServer | Object | Objet contenant des informations sur le serveur SOAP |
| soapServer.bytesIn | Number | Octets reçus par le serveur SOAP |
| soapServer.bytesOut | Number | Octets envoyés par le serveur SOAP |
| soapServer.hits | Number | Nombre de hits du serveur SOAP |
| soapServer.executionTime | Number | Temps d'exécution CPU du serveur SOAP |
| SQLBeginEndStatement | Number | Nombre d'utilisations de Begin SQL / End SQL |
| SQLLoginInternal | Number | Nombre d'appels à SQL LOGIN utilisant SQL_INTERNAL |
| sqlServer | Object | Objet contenant des informations sur le serveur SQL |
| sqlServer.hits | Number | Nombre de requêtes SQL exécutées |
| sqlServer.bytesIn | Number | Octets reçus par le moteur SQL |
| sqlServer.bytesOut | Number | Octets envoyés par le moteur SQL |
| sqlServer.executionTime | Number | Temps d'exécution CPU pour les requêtes SQL |
| usingQUICNetworkLayer | Boolean | True si la base de données utilise la couche réseau QUIC |
| totalExecutionTime | Number | Temps d'exécution total du CPU : somme de tous les types de requêtes |
| totalRequests | Number | Total des requêtes : somme des requêtes web, REST, SOAP, SQL et du trafic interne |
| webServer | Object | Objet contenant des informations sur le serveur Web |
| webServer.bytesIn | Number | Octets reçus par le serveur Web |
| webServer.bytesOut | Number | Octets envoyés par le serveur Web |
| webServer.hits | Number | Nombre de hits du serveur Web |
| webServer.executionTime | Number | Temps d'exécution CPU du serveur Web |
| webStaticServer | Object | Objet contenant des informations sur le serveur Web statique |
| webStaticServer.bytesIn | Number | Octets reçus par le serveur Web statique |
| webStaticServer.bytesOut | Number | Octets envoyés par le serveur Web statique |
| webStaticServer.hits | Number | Nombre de hits du serveur Web statique |
| webStaticServer.executionTime | Number | Temps d'exécution CPU du serveur Web statique |
Où sont-elles stockées et envoyées ?
Les données collectées sont écrites dans un fichier texte (format JSON) par base de données lorsque 4D Server quitte. Le fichier est stocké dans le dossier 4D actif, c'est-à-dire :
- sous Windows :
Users\[userName]\AppData\Roaming\4D Server - sous macOS :
/Users/[userName]/Library/ApplicationSupport/4D Server
Une fois par semaine, le fichier est automatiquement envoyé par le réseau à 4D. Le fichier est ensuite supprimé du dossier 4D actif.

Si le fichier n'a pas pu être envoyé pour une raison quelconque, il est néanmoins supprimé et aucun message d'erreur n'est affiché côté 4D Server.
Le fichier est envoyé au serveur à l'adresse suivante : https://dcollector.4d.com (ip : 195.68.52.83).
Désactiver la collecte de données dans les applications client/serveur générées
Vous pouvez désactiver la collecte automatique de données dans les applications client/serveur générées.
Pour désactiver la collecte, passez la valeur False à la clé ServerDataCollection dans le fichier buildApp.4DSettings, utilisé pour construire l'application client/serveur.