Translating terminology across database vendors
Migrating from one database technology to another these days is easier than ever, with the cloud providers not only offering many RDBMS products but migration strategies and tools that can do a lot of the hard work. For instance, see the AWS Schema Conversion Tool and the AWS Database Migration Service pages that guide you through the process of converting and migrating your schema and data from the source to the target platform.
What can be more challenging, is bringing your DBAs up to speed with the new database platform where the features all have slightly different names behind them - or more confusingly, similar names for different concepts, for example, a PostgreSQL cluster is a collection of databases with a central data dictionary, whereas an Oracle cluster is a number of servers - and of course, there are database objects (table/index) called clusters just to add to the confusion.
So with that in mind, I thought I’d continue the idea that Mick McGuinness, our Product Manager here at DBmarlin, had started had started, by comparing database terminology across our supported database platforms. We currently support Oracle, Microsoft SQL Server, MySQL, MariaDB, PostgreSQL, CockroachDB, and IBM Db2.
Of course, there are consistent themes running through all the major database vendors’ products, and they share a lot in common. For example, all the databases here are transactionally ACID compliant and therefore operate with logging of some sort to ensure committed transactions are persistent on disk. They are all capable of being backed up online and are widely used as backend data stores for internet-facing systems that operate 24x7. They all have a query optimizer which can be examined to find the best possible query path and they all expose wait states so that we can diagnose issues with a toolset like DBmarlin. There are also some notable differences too, or cases where different vendors have the same features but decide to use different names for them.
To start with, let’s collate all the glossaries. I’m not suggesting you read these, just letting you have an easy access point to dive into vendor documentation. Most vendors have a useable glossary in one place with Microsoft being the exception. It seems they decided to break the glossary down into relevant chunks and push it down into each documentation section, so, to make things consistent, I’ve put a link to the SQL Server 2014 glossary, so the latest version features will have to be searched for.
- https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/glossary.html (Oracle Database 21c)
- https://learn.microsoft.com/en-us/previous-versions/sql/2014/2014-toc/glossary?view=sql-server-2014 (SQL Server 2014 - last available Glossary)
- https://dev.mysql.com/doc/refman/8.0/en/glossary.html (MySQL 8.0)
- https://www.postgresql.org/docs/current/glossary.html (PostgreSQL current version)
- https://www.cockroachlabs.com/docs/stable/architecture/glossary.html (CockroachDB current version)
- https://www.ibm.com/docs/en/db2/11.5?topic=glossary (IBM DB2 11.5)
- https://mariadb.com/docs/glossary/ (MariaDB current version)
Now we come to the main terminology comparison and again, I’m not expecting this to be read end-to-end but hopefully, it will be a useful lookup tool.
We have included all the most useful information, but if it is missing a feature you’ve had trouble tracking down, let us know and we’ll add it to the list for when we re-publish.
Oracle | SQL Server | MySQL | PostgreSQL | CockroachDB | IBM Db2 | MariaDB | |
Database primary model | Relational
| Relational
| Relational | Relational | Relational | Relational
| Relational |
Distributed SQL | No | No | No | No | Yes | No | Available with Xpand |
Data Types | Relational,
Object,
JSON, XML, Spatial, Graph, FullText | Relational, Object, JSON, XML, Spatial, Graph, FullText | Relational, Object, JSON, XML, Spatial, FullText | Relational, Object, JSON, XML, Spatial, FullText | Relational, JSON, Spatial | Relational,
JSON, XML, Spatial, FullText | Relational, Object, JSON, XML, Spatial, FullText |
Deployment | Single node, Failover HA, RAC Cluster, Data Guard, Goldengate,
Shard | Single node, AlwaysOn Failover, AlwaysOn Availability Groups | Single Node, NDB Cluster (Sharding) | Single Node, Shared Disk HA, WAL Shipping, Logical replication | Distributed Cloud native | Single node, HADR, Log Shipping, Log Mirroring, Purescale Distributed | Single Node,
Max Scale |
Instance | Instance | Instance | Instance | Instance | Cluster | Instance | Instance |
Database / Schema | The database contains a number of schemas.
A schema is a logical container for schema objects such as tables and indexes. | The instance contains a number of databases.
A database is a logical container for schema objects such as tables and indexes. | The instance contains a number of databases.
A database is a logical container for schema objects such as tables and indexes. | The instance contains a number of databases.
A database is a logical container for schema objects such as tables and indexes. | The instance contains a number of databases.
A database is a logical container for schema objects such as tables and indexes. | The instance contains a number of databases.
A database is a logical container for schema objects such as tables and indexes. | The instance contains a number of databases.
A database is a logical container for schema objects such as tables and indexes. |
Clustering options | RAC (real application cluster) | Always On Failover
Always On Availability Groups | NDB Cluster | High Availability Failover using shared disk | Distributed database so is Clustered by default across usually 3 or more nodes. | High Availability Failover HADR.
PureScale Distributed | MariaDB Galera Cluster.
Xpand Distributed |
Replication | Data Guard Primary-Secondary.
Master-Snapshot and Multi-Master
Oracle Goldengate | Publish-distribute-subscribe.
Snapshot or PeerToPeer | Source-Replica(s) Master-Master
E.g. Galera | Primary-Replica | Multi-Active | Publish-Subscribe.
Q-Capture
Q-Apply.
SQL capture-Apply | Primary-Replica(s) and Master-Master
E.g. Galera |
License | Commercial | Commercial | GNU General Public License for Community Edition. | MIT-style license | Commercial cloud service. Free Serverless Tier available. | Commercial | Free under FOSS GPLv2 |
ACID compliance (atomicity, consistency, isolation, and durability) | Yes | Yes | Yes with InnoDB (not MyISAM) | Yes | Yes | Yes | Yes with InnoDB (not MyISAM) |
Query language | SQL | SQL | SQL | SQL | SQL | SQL | SQL |
Procedural Code | PL/SQL | T-SQL | Procedural Routines | PL/pgsql | Not available at Sept ‘22 | PL/SQL | Procedural Routines |
Materialized view | Yes | In Preview for 2022 Azure Synapse Analytics only | No | Yes | Yes | Yes (MQT) | No |
Command line interface (CLI) | sqlplus | sqlcmd | mysql | psql | cockroach | db2cli | mariadb/mysql |
Admin UI | Oracle Enterprise Manager (OEM) | SQL Server Management Studio (SSMS) | MySQL Workbench | pgadmin | DB Console webpage | IBM Data Studio
IBM Data Server Manager | MySQL Workbench |
Data files | Data files | Primary (.mdf) datafiles. Secondary (.ndf) datafiles | InnoDB tablespace files innodb_file_per_table | Table and index per file | Pebble storage. Objects split into ranges on rafts to shard across nodes | Containers | InnoDB tablespace files or innodb_file_per_table |
Group of datafiles | Tablespace | Filegroup | Filesystem folder/directory | Tablespace | N/A | Table Spaces | Filesystem folder/directory |
Logs to protect against data loss in the event of a crash | Online Redo logs are written by LGWR process | Written to the database’s transaction Log (.ldf) | InnoDB Redo Log | Write ahead log (WAL) | Raft logs (Raft Consensus Group WALs) | Redo/Undo are written to database log. | InnoDB Redo Log |
Logs to rollback transactions rather than commit | Undo tablespace | Written to the database’s transaction Log (.ldf) | InnoDB Undo Log | N/A writes create new row versions. (MVCC) | N/A Writes create new row version. (MVCC) | Redo/Undo are written to the database log. | InnoDB Undo Log |
Database logging modes | Archive Log, Non-Archive Log | Full logging, Simple Logging | binlog (default),
skip-log-bin | archive_mode=on, archive_mode=off | Raft Logging | Circular Logging, Archive Logging | binlog (default),
skip-log-bin |
Backups | RMAN Open, Full, Incremental, Archive Log | Full, Differential, Transaction Log | MySQL dump, Enterprise Backup, Online, Offline, Incremental, Binary Log | SQL dump, pg_start_backup/pg_stop_backup and copy files | Full Backup, Incremental backup with revision history (Enterprise) | Backup Full, Incremental, logs are included | MySQL dump, Mariabackup online Full, Incremental, Binary Log |
Database metadata | Data dictionary
USER_OBJECTS, DBA_OBJECTS
In SYS schema | System Database | Data Dictionary in System Tablespace | System Catalogs | System Catalogs - information_schema | System Catalog | Data Dictionary in System Tablespace |
Storage Engine(s) | Oracle block file format stored on the filesystem or in Oracle ASM | SQL Server Data page. | Multiple storage engines e.g., InnoDB, MyISAM and many more. | Single engine | Pebble based on RocksDB | Single engine | Multiple storage engines e.g. XtraDB, ColumnStore and many more. |
Performance schema | V$ tables | DMV - Dynamic Management Views | performance_schema | pg_stat_activity etc. | crdb.internal schema | SYSPROC.MON_ table functions | performance_schema |
Show active sessions | SELECT username,sid,serial# FROM v$session where status= 'ACTIVE' | exec sp_who2 | SHOW FULL PROCESSLIST | SELECT usesysid, usename FROM pg_stat_activity where state = ‘atvice’ | SHOW ALL {LOCAL,CLUSTER} SESSIONS | SELECT * FROM TABLE(SYSPROC.MON_GET_CONNECTION(NULL, -2)) | SHOW FULL PROCESSLIST |
View top SQL | AWR/ADDM (Diagnostic License required) | Query Store and Management Studio | Slow Query Log.
MySQL Workbench | pg_stat_statements | DB Console Statements Page,
Slow Query Log | mon_get_routine | Slow Query Log.
MySQL Workbench |
Query Planning | Optimizer | Query Optimizer | Optimizer | Query Planner | Cost Based Optimizer | Optimizer | Optimizer |
Analyze SQL statement | EXPLAIN PLAN | EXPLAIN PLAN | EXPLAIN PLAN | EXPLAIN PLAN | EXPLAIN PLAN | EXPLAIN PLAN | EXPLAIN PLAN |
Wait events to see where database time is spent | Yes (see KB) | Yes (see KB) | Yes (see KB) | Yes (see KB) | Not yet | Yes (see KB) | Yes (see KB) |
Store commonly used data in memory | Blocks in the Buffer Cache | Pages in the Buffer Cache or Buffer Pool | InnoDB Buffer | Shared buffer pool | RocksDB’s cache memory | DB2 buffer pool | InnoDB Buffer |
Block/Page size | 8Kb Default. 2Kb, 4Kb, 8Kb 16Kb and 32Kb optional | 8Kb fixed | 16Kb Default. 4Kb, 8Kb, 16Kb, 32Kb and 64Kb optional | 8Kb Default. | Pebble Storage Engine | 4Kb Default.
8Kb, 16Kb, 32Kb optional | 16Kb Default. 4Kb, 8Kb, 16Kb, 32Kb and 64Kb optional |
Transaction Temporary Data | Temporary Segments in Temporary Tablespaces | TempDB | Temporary Tablespaces | temp_tablespaces | Vector Execution Engine will spill to disk.
Temp tables are experimental in v22.1 | Temporary Tablespaces | Temporary Tablespaces |
Character set and Sort Order Control | NLS parameters | Collations | Character Sets
Collations | Locales
Collations
| Locales
Collations
| Locales
Collations
DB2CODEPAGE | Character Sets
Collations |
DBmarlin provides a common interface to view performance across multiple database vendors (all those in the table above) which help avoids some of these problems of terminology. This is helpful if you are learning a new database engine having worked with a different one in past or you are part of a team which is responsible for database performance across a mixture of database technologies.
Ready to try DBmarlin?
If you would like to find out more about DBmarlin and why we think it is special, try one of the links below.
- Get hands-on without an installation at play.dbmarlin.com
- Download DBmarlin from www.dbmarlin.com, with one FREE standard edition license, which is free forever for 1 target database.
- Join our new community at https://community.dbmarlin.com/invitation?code=74020A