Skip to main content
Version: Next

Data Collection

To help us make our products always better, we automatically collect data regarding usage statistics on running 4D Server applications. Collected data is transferred with no impact on the user experience. No personal data is collected. For more information on 4D policy regarding personal data protection, please visit this page.

The section below explains:

  • what information is collected,
  • where information is stored and when it is sent to 4D,
  • how to disable automatic data collection in client/server built applications.

Collected information

Data is collected during the following events:

  • database startup,
  • database closure,
  • web server startup,
  • use of specific features such as php, open datastore, remote debugger,
  • client connection,
  • data collection sending.

Some data is also collected at regular intervals.

DataTypeNotes
appServerObjectObject containing application server information
appServer.hitsNumberNumber of requests from internal processes
appServer.bytesInNumberBytes received by internal processes
appServer.bytesOutNumberBytes sent by internal processes
appServer.executionTimeNumberCPU execution time for internal processes
cacheMissBytesObjectNumber of bytes missed from cache
cacheMissCountObjectNumber of reads missed in the cache
cacheReadBytesObjectNumber of bytes read from cache
cacheReadCountObjectNumber of reads in the cache
classUsageObjectNumber of instances of certain language classes
connectionSystemsCollectionClient OS without the build number (in parenthesis) and number of clients using it
databases[].cacheSizeNumberCache size in bytes
databases[].externalDatastoreOpenedNumberNumber of calls to Open datastore
databases[].idNumberDatabase ID
databases[].internalDatastoreOpenedNumberNumber of times the datastore is opened by an external server
databases[].maxConcurrent4DClientsNumberMaximum number of simultaneous 4D Client sessions (using a 4D Client license) over the collection interval
databases[].maxConcurrentRestSessionsNumberMaximum number of simultaneous REST sessions over the collection interval
databases[].maxConcurrentWebSessionsNumberMaximum number of simultaneous Web sessions (4DACTION and SOAP) over the collection interval
databases[].maximum4DClientConnectionsNumberMaximum number of 4D Client connections to the server
databases[].numberOfDistinctClientsNumberDistinct count of client persistent UUID seen over collection interval
databases[].numberOfFieldsNumberNumber of fields
databases[].numberOfKeepRecordSyncInfoNumberNumber of tables with the "Enable Replication" option checked
databases[].numberOfRecordsMaxNumberTotal number of records
databases[].numberOfTablesNumberNumber of tables
databases[].qodly.webformsNumberNumber of Qodly webforms
databases[].remoteDebugger4DRemoteAttachmentsNumberNumber of attachments to the remote debugger from a remote 4D
databases[].remoteDebuggerQodlyAttachmentsNumberNumber of attachments to the remote debugger from Qodly
databases[].remoteDebuggerVSCodeAttachmentsNumberNumber of attachments to the remote debugger from VS Code
databases[].structureHashText
databases[].uniqueIDText (hashed string)Unique id associated to the database (Polynomial Rolling hash of the database name)
databases[].uptimeNumberTime elapsed (in seconds) between two collection events
databases[].uuidTextDatabase UUID
databases[].webIPAddressesNumberNumberNumber of different IP addresses that made a request to 4D Server
databases[].webMaxScalableSessionsNumberMaximum number of scalable sessions on the server
databases[].webScalableSessionsBooleanTrue if scalable sessions are activated
dataSegment1.diskReadBytesObjectNumber of bytes read in the data file
dataSegment1.diskReadCountObjectNumber of reads in the data file
dataSegment1.diskWriteBytesObjectNumber of bytes written in the data file
dataSegment1.diskWriteCountObjectNumber of writes in the data file
dataSizeNumberData file size in bytes
dbServerObjectObject containing DB4D server information
dbServer.hitsNumberNumber of requests from internal processes
dbServer.bytesInNumberBytes received by internal processes
dbServer.bytesOutNumberBytes sent by internal processes
dbServer.executionTimeNumberCPU execution time for internal processes
encryptedConnectionsBooleanTrue if client/server connections are encrypted
externalPHPBooleanTrue if the client performs a call to PHP execute and uses its own version of php
general.buildNumberNumberBuild number of the 4D application
general.headlessBooleanTrue if the application is running in headless mode
general.isRosettaBooleanTrue if 4D is emulated through Rosetta on macOS, False otherwise (not emulated or on Windows).
general.licenseObjectCommercial name and description of product licenses
general.uniqueIDTextUnique ID of the 4D Server
general.versionTextVersion number of the 4D application
hasDataChangeTrackingBooleanTrue if a "__DeletedRecords" table exists
indexSegment.diskReadBytesNumberNumber of bytes read in the index file
indexSegment.diskReadCountNumberNumber of reads in the index file
indexSegment.diskWriteBytesNumberNumber of bytes written in the index file
indexSegment.diskWriteCountNumberNumber of writes in the index file
indexSizeNumberIndex size in bytes
isCompiledBooleanTrue if the application is compiled
isEncryptedBooleanTrue if the data file is encrypted
isEnginedBooleanTrue if the application is merged with 4D Volume Desktop
isProjectModeBooleanTrue if the application is a project
LDAPLoginNumberNumber of calls to LDAP LOGIN
license.sffPrimaryKeyNumberServer master product number
machine.CPUTextName, type, and speed of the processor
machine.memoryNumberVolume of memory storage (in bytes) available on the machine
machine.numberOfCoresNumberTotal number of cores
machine.systemTextOperating system version and build number
maximumNumberOfWebProcessesNumberMaximum number of simultaneous web processes
maximumUsedPhysicalMemoryNumberMaximum use of physical memory
maximumUsedVirtualMemoryNumberMaximum use of virtual memory
mobileCollectionInformation on mobile sessions
numberOfWebServicesNumberNumber of methods published as Web Services
ODBCLoginNumberNumber of calls to SQL LOGIN using ODBC
phpCallNumberNumber of calls to PHP execute
QueryBySQLNumberNumber of calls to QUERY BY SQL
restServerObjectObject containing REST server information
restServer.bytesInNumberBytes received by the REST server
restServer.bytesOutNumberBytes sent by the REST server
restServer.hitsNumberNumber of hits on the REST server
restServer.executionTimeNumberCPU execution time for the REST WEB server
soapServerObjectObject containing SOAP server information
soapServer.bytesInNumberBytes received by the SOAP server
soapServer.bytesOutNumberBytes sent by the SOAP server
soapServer.hitsNumberNumber of hits on the SOAP server
soapServer.executionTimeNumberCPU execution time for the SOAP server
SQLBeginEndStatementNumberNumber of uses of Begin SQL / End SQL
SQLLoginInternalNumberNumber of calls to SQL LOGIN using SQL_INTERNAL
sqlServerObjectObject containing SQL server information
sqlServer.hitsNumberNumber of SQL queries executed
sqlServer.bytesInNumberBytes received by the SQL engine
sqlServer.bytesOutNumberBytes sent by the SQL engine
sqlServer.executionTimeNumberCPU execution time for SQL queries
usingQUICNetworkLayerBooleanTrue if the database uses the QUIC network layer
totalExecutionTimeNumberTotal CPU execution time: sum of all request types
totalRequestsNumberTotal requests: sum of web, REST, SOAP, SQL, and internal traffic
webServerObjectObject containing Web server information
webServer.bytesInNumberBytes received by the Web server
webServer.bytesOutNumberBytes sent by the Web server
webServer.hitsNumberNumber of hits on the Web server
webServer.executionTimeNumberCPU execution time for the Web server
webStaticServerObjectObject containing the static Web server information
webStaticServer.bytesInNumberBytes received by the static Web server
webStaticServer.bytesOutNumberBytes sent by the static Web server
webStaticServer.hitsNumberNumber of hits on the static Web server
webStaticServer.executionTimeNumberCPU execution time for the static Web server

Where is it stored and sent?

Collected data is written in a text file (JSON format) per database when 4D Server quits. The file is stored inside the active 4D folder, i.e.:

  • on Windows: Users\[userName]\AppData\Roaming\4D Server
  • on macOS: /Users/[userName]/Library/ApplicationSupport/4D Server

Once a week, the file is automatically sent over the network to 4D. The file is then deleted from the active 4D folder.

If the file could not be sent for some reason, it is nevertheless deleted and no error message is displayed on the 4D Server side.

The file is sent to the following server address: https://dcollector.4d.com (ip: 195.68.52.83).

Disabling data collection in client/server built applications

You can disable the automatic data collection in client/server built applications.

To disable the collection, pass the value False to the ServerDataCollection key in the buildApp.4DSettings file, used to build the client/server application.