Just two weeks after the Debezium 0.8 release, I’m very happy to announce the release of Debezium 0.9.0.Alpha1!

The main feature of the new version is a first work-in-progress version of the long-awaited Debezium connector for MS SQL Server. Based on the CDC functionality available in the Enterprise and Standard editions, the new connector lets you stream data changes out of Microsoft’s popular RDBMS.

Besides that we’ve continued the work on the Debezium Oracle connector. Most notably, it supports initial snapshots of captured tables now. We’ve also upgraded Apache Kafka in our Docker images to 1.1.1 (DBZ-829).

Please take a look at the change log for the complete list of changes in 0.9.0.Alpha1 and general upgrade notes.

Note: At the time of writing (2018-07-26), the release artifacts (connector archives) are available on Maven Central. We’ll upload the Docker images for 0.9.0.Alpha1 to Docker Hub as soon as possible. The Docker images are already uplodaded and ready for use under tags 0.9.0.Alpha1 and rolling 0.9.

SQL Server Connector

Support for SQL Server had been on the wish list of Debezium users for a long time (the original issue was DBZ-40). Thanks to lots of basic infrastructure created while working on the Oracle connector, we were finally able to come up with a first preview of this new connector in comparatively short time of development.

Just as the Oracle connector, the one for SQL Server is under active development and should be considered an incubating feature at this point. So for instance the structure of emitted change messages may change in upcoming releases. In terms of features, it supports initial snapshotting and capturing changes via SQL Server’s CDC functionality. There’s support for the most common column types, table whitelisting/blacklisting and more. The most significant feature missing is support for structural changes of tables while the connector is running. This is the next feature we’ll work on and it’s planned to be delivered as part of the next 0.9 release (see DBZ-812).

We’d be very happy to learn about any feedback you may have on this newest connector of the Debezium family. If you spot any bugs or have feature requests for it, please create a report in our JIRA tracker.

Oracle Connector

The Debezium connector for Oracle is able to take initial snapshots now. By means of the new connector option snapshot.mode you can control whether read events for all the records of all the captured tables should be emitted.

In addition the support for numeric data types has been honed (DBZ-804); any integer columns (i.e. NUMBER with a scale <\= 0) will be emitted using the corresponding int8/int16/int32/int64 field type, if the columns precision allows for that.

We’ve also spent some time on expanding the Oracle connector documentation, which covers the structure of emitted change events and all the data type mappings in detail now.

Debezium 0.8.1.Final

Together with Debezium 0.9.0.Alpha1 we also did another release of the current stable Debezium version 0.8.

While 0.9 at this point is more interesting to those eager to try out the latest developments in the Oracle and SQL Server connectors, 0.8.1.Final is a recommended upgrade especially to the users of the Postgres connector. This release fixes an issue where it could happen that WAL segments on the server were retained longer than necessary, in case only records of non-whitelisted tables changed for a while. This has been addressed by means of supporting heartbeat messages (as already known from the MySQL connector) also for Postgres (DBZ-800). This lets the connector regularly commit offsets to Kafka Connect which also serves as the hook to acknowledge processed LSNs with the Postgres server.

You can find the list of all changes done in Debezium 0.8.1.Final in the change log.

What’s next?

As discussed above, we’ll work on supporting structural changes to captured tables while the SQL Server connector is running. The same applies to the Oracle connector. This will require some work on our DDL parsers, but thanks to the foundations provided by our recent migration of the MySQL DDL parser to Antlr, this should be manageable.

The other big focus of work with be to provide an alternative implementation for getting changes from Oracle which isn’t based on the XStream API. We’ve done some experiments with LogMiner and are also actively exploring further alternatives. While some details are still unclear, we are optimistic to have something to release in this area soon.

If you’d like to learn more about some middle and long term ideas, please check out our roadmap. Also please get in touch with us if you got any ideas or suggestions for future development.

Gunnar Morling

Gunnar is a software engineer at Decodable and an open-source enthusiast by heart. He has been the project lead of Debezium over many years. Gunnar has created open-source projects like kcctl, JfrUnit, and MapStruct, and is the spec lead for Bean Validation 2.0 (JSR 380). He’s based in Hamburg, Germany.


About Debezium

Debezium is an open source distributed platform that turns your existing databases into event streams, so applications can see and respond almost instantly to each committed row-level change in the databases. Debezium is built on top of Kafka and provides Kafka Connect compatible connectors that monitor specific database management systems. Debezium records the history of data changes in Kafka logs, so your application can be stopped and restarted at any time and can easily consume all of the events it missed while it was not running, ensuring that all events are processed correctly and completely. Debezium is open source under the Apache License, Version 2.0.

Get involved

We hope you find Debezium interesting and useful, and want to give it a try. Follow us on Twitter @debezium, chat with us on Zulip, or join our mailing list to talk with the community. All of the code is open source on GitHub, so build the code locally and help us improve ours existing connectors and add even more connectors. If you find problems or have ideas how we can improve Debezium, please let us know or log an issue.