Skip to main content
Change data capture (CDC) is a method for capturing and tracking changes made to data in a database. Using CDC ensures real-time data synchronisation and data integrity across all systems reliant on that data. Transactional databases store all changes in a transaction log, facilitating database recovery in case of a crash. Log-based CDC leverages this feature to read changes from the log. Streamkap uses this method as it offers the ideal balance between minimising performance impact on the source database while maintaining high data quality. The most significant advantage of log-based change data capture is its ability to decouple data capture from the source application, making it highly versatile across various applications.

What CDC Can and Cannot Capture

CDC Captures Physical Tables Only

Change Data Capture works by reading the database transaction log (binlog, WAL, oplog, redo log, etc.), which records committed changes to physical tables. CDC can capture:
  • Base tables (regular tables with physical storage)
  • Insert, update, and delete operations on those tables
  • Schema changes (DDL) on those tables

Why Views Cannot Be Captured

Views are not capturable because they are virtual—they’re query-time computations over base tables with no physical storage. When you query a view, the database engine executes the underlying SELECT statement against the base tables. Since views don’t store data, they don’t generate transaction log entries. Common non-capturable entities across all databases:
  • Views: Virtual tables defined by queries, no physical storage or transaction log entries
  • Common Table Expressions (CTEs): Query-time constructs, exist only during query execution
  • Temporary tables: Session or transaction-scoped, not durably logged
  • System/metadata tables: Represent database internals, not user data (e.g., information_schema, pg_catalog, sys.*)
Each database also has vendor-specific entities that cannot be captured, such as PostgreSQL unlogged tables, SQL Server memory-optimized tables, MySQL MEMORY tables, Oracle global temporary tables, and MongoDB time series collections. See the source-specific FAQ documentation for details.

The Solution: Capture Base Tables

Solution:
Configure CDC on the underlying base tables that power your views. The view logic can be recreated in your destination or transformation layer.