Troubleshooting: Cross-platform portability considerations
If your application is 100% guardrail compliant, you can successfully port your application from one database platform to another without any additional action. You can skip the rest of the information in this article.
However, if you made changes to your application or database outside of Designer Studio, or if you use REST, HTTP, or SOAP integration, you might need to reconfigure some aspects of your application before you port to a new database. For example, if you used the database vendor tools to create or modify the database, some constructs that are specific to a particular database platform (for example, Oracle) might not automatically translate into a similar construct on another platform (for example, Microsoft SQL Server). If your application includes a database-specific construct or does not meet the recommendations in this article, you might not be able to automatically deploy your application to other database platforms.
Supported property-to-database type mappings
Use the information in the following table to determine the portable format for common database types.
Pega 7 Platform property type | IBM DB2 for Linux, UNIX, and Windows and IBM DB2 for z/OS | Microsoft SQL Server | Oracle | PostgreSQL |
---|---|---|---|---|
Date | VARCHAR(8) bytes | VARCHAR(8) characters | VARCHAR2(8) characters | VARCHAR(8) characters |
DateTime | TIMESTAMP | DATETIME | TIMESTAMP | TIMESTAMP |
Decimal | DECIMAL | DECIMAL | DECIMAL | DECIMAL |
Double | DECIMAL | DECIMAL | DECIMAL | DECIMAL |
Identifier | VARCHAR(n) bytes | VARCHAR(n) characters | VARCHAR2(n) characters | VARCHAR(n) characters |
Integer | DECIMAL | DECIMAL | DECIMAL | DECIMAL |
Password | VARCHAR(70) bytes | VARCHAR(70) characters | VARCHAR2(70) characters | VARCHAR(70) characters |
Text | VARCHAR bytes | VARCHAR characters | VARCHAR2 characters | VARCHAR characters |
TextEncrypted | VARCHAR bytes | VARCHAR characters | VARCHAR2 characters | VARCHAR characters |
TimeOfDay | VARCHAR(6) bytes | VARCHAR(6) characters | VARCHAR2(6) characters | VARCHAR(6) characters |
TrueFalse | VARCHAR(5) bytes | VARCHAR(5) characters | VARCHAR2(5) characters | VARCHAR(5) characters |
Variable-length types
When using variable-length types, follow the recommendations in the following table. These value ranges are for all supported databases and ensure that you can port the data to other databases.
Decimal | Integer | VARCHAR/VARCHAR2 or NVARCHAR/NVARCHAR2 |
---|---|---|
precision: 0-31 scale: 0-precision | precision: 0-31 scale: ==0 | up to 4000 bytes (UTF-8 or UTF-16) or up to 4000 characters (ASCII) |
- Decimals: Decimal columns created or modified to have precision or scale outside the listed range are not portable by using the Pega 7 Platform tools. For example, Microsoft SQL Server supports a precision of up to 38 (38 total digits), but IBM DB2 for Linux, UNIX, and Windows supports only 31. Attempting to migrate data from this Microsoft SQL Server column to IBM DB2 for Linux, UNIX, and Windows would result in the loss of data and might fail.
- Integers: As a best practice, use the decimal type with a scale of 0 in place of integer types.
- VARCHAR: IBM DB2 databases interpret VARCHAR(n) as n bytes; other databases interpret it as n characters. Some platforms allow you to specify the type of interpretation. For example, on Oracle databases you can specify VARCHAR(n byte) or VARCHAR(n char). This distinction is particularly important when dealing with Unicode data. Although ASCII uses one byte per character, UTF-8 uses up to 3 bytes per character, and UTF-16 uses 2 bytes per character.
Views
ANSI SQL views are fully supported. Materialized views are database-specific and therefore not portable.
Index limitations
The maximum index size across all vendors is 900 bytes, which means that the sum of the maximum lengths of all columns in the index must be 900 bytes or less.
Functional indexes are not portable.
Integration resource limitations
REST, HTTP, and SOAP are currently supported on Pega Cloud, but might require additional configuration if you port your application to a new database. For more information about integrating with Pega Cloud, see Integration in your Pega Cloud environment.
Any integration functionality not listed in this article or in Integration in your Pega Cloud environment might cause portability problems.