1

I'm planning to test the feasibility of using Yugobyte DB (https://www.yugabyte.com/) for an Akka persistence layer.

From https://doc.akka.io/docs/akka/2.4/java/persistence.html :

Plugin TCK In order to help developers build correct and high quality storage plugins, we provide a Technology Compatibility Kit (TCK for short).

The TCK is usable from Java as well as Scala projects. For Java you need to include the akka-persistence-tck dependency:

The latest version of Akka docs : https://doc.akka.io/docs/akka/2.6.15/persistence.html?language=java does not mention the Technology Compatibility Kit. Is Technology Compatibility Kit no longer supported ? I'm aiming to use Akka version 2.6.15

From https://mvnrepository.com/artifact/com.typesafe.akka/akka-persistence-tck the latest tck version is dated Jun, 2021 , therefore tck is still supported.

Should there be a Technology Compatibility Kit for Yugobyte if Akka persistence supports Yugobyte ?

Cassandra support for Akka is documented here: https://doc.akka.io/docs/akka-persistence-cassandra/current/ while Yugobyte is not mentioned in the Akka docs. How to determine if Yugobyte is supported by Akka ? Is there a series of tests I should perform using the Technology Compatibility Kit ?

Should a tck (https://en.wikipedia.org/wiki/Technology_Compatibility_Kit) be implemented by the yugobyte team/vendor to enable Akka Persistence suppport for Yugobyte ?

blue-sky
  • 51,962
  • 152
  • 427
  • 752

1 Answers1

1

The TCK is essentially just a test suite to use when developing an Akka Persistence plugin. If your plugin passes the tests, then it's almost certain to work with Akka Persistence.

To use Yugabyte from Akka Persistence (assuming it doesn't support JDBC), you would implement an Akka Persistence plugin and declare a test dependency on akka-persistence-tck for the Akka version you're targeting with your plugin. Then you can extend classes in the test suite (e.g. akka.persistence.journal.JournalSpec) to incorporate the TCK's tests.

Levi Ramsey
  • 18,884
  • 1
  • 16
  • 30
  • Thanks. Therefore, if Akka persistence does not support the DB I'm interested in, in this case YugoByte I need to write the plugin. For Cassandra the plugin is already written and implemented for Akka Persistence ? – blue-sky Jul 13 '21 at 19:08
  • Yep, there's a pre-existing plugin for Cassandra which is actively maintained by the core Akka team. – Levi Ramsey Jul 13 '21 at 22:24
  • 1
    The YugabyteDB YSQL layer, is PostgreSQL compatible, so you can connect to it with JDBC using https://jdbc.postgresql.org/. The YCQL layer, is Cassandra compatible. While it can work with the default Akka plugin, it's much better to swap the java-cassandra-driver with https://github.com/yugabyte/cassandra-java-driver because it's more efficient and the partitioning system logic changes from Cassandra. – dh YB Jul 14 '21 at 08:10
  • @dorian YB "The YCQL layer, is Cassandra compatible." could you elaborate on this point please ? does this mean Cassandra can accept YCQL queries ? My understanding is that YCQL is a custom SQL like language for interacting with the Yugabyte DB. – blue-sky Jul 14 '21 at 08:53
  • 1
    @blue-sky It means YCQL = (Y)ugabyte(C)assandra)(Q)uery(L)anguage. YCQL is based on Cassandra https://docs.yugabyte.com/latest/api/ycql/. Our drivers are forks of Cassandra client drivers. You can use a Cassandra client to connect to YugabyteDB YCQL. But using our forks is better because we've changed the partitioning and added extra features like JSONB. – dh YB Jul 15 '21 at 08:57