data_version is the version of data added via the data scripts.
Those scripts are developpeddeveloped under the module folder under the Setup/InstallData.php and Setup/UpgradeData.php.
schema_version is the version of the database schema added via the setup scripts.
Those scripts are developed under the module folder under the Setup/InstallSchema.php and Setup/UpgradeSchema.php
So the scenario when data_version and schema_version are different is the following:
- youYou have a module that have both setup and data scripts
- normallyNormally you should run
php bin/magento setup:upgradeso both schema and data scripts will run - insteadInstead of doing this you first run
php bin/magento setup:db-schema:upgrade. At this point theschema_versionwill be different to thedata_version - runningRunning
php bin/magento setup:db-data:upgradewill upgrade the data and make both versions the same