Did this article resolve your question/issue?



Schema Versioning: Why V9 schema changes are so fast

« Go Back


TitleSchema Versioning: Why V9 schema changes are so fast
URL Name20691
Article Number000162505
EnvironmentProduct: Progress
Version: 9.x
Product: OpenEdge
Version: 10.x and later
OS: All supported platforms
Question/Problem Description
How schema versioning speeds up the schema change process.
Why V9 schema changes are so fast.
What is schema versioning?
Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
With schema versioning, each table has a version number that identifies the current logical record layout. Each record in the database has a version number that defines its physical layout.

When you make a schema change, a table's schema is updated and its version number changes. The records stored in the database are not changed during the schema change.
Later when a record is fetched, it is converted to the new version (if it is using the old version) before it is returned from the storage manager. If the record is subsequently updated, it is written back to the database with the updated layout and version.

As a result, the writing of the converted record to disk is now combined with the original write operation of a record. Thus, you're getting two operations performed where one write operation had been previously performed. This technique makes it possible to update the schema without the need to go through each of the records again when the actual schema change occurs. In addition, the risk of destroying the before image log is also eliminated.
Last Modified Date11/20/2020 7:38 AM
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.