Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

TypeDataStoreValidationQueryIndex
longtextMariaDBSELECTYesNo
longtextPostgreSQLNoNoNo
jsonPostgreSQLINSERT / UPDATEYesNo
jsonbPostgreSQLINSERT / UPDATEYesYes


Conclusion

My suggestion as shown below is three options: 

  1. replace all ElementCollections with Converters (Minimum change with Minimum improvement):
    • A lot of small Jsons
    • Using longtext, we are be able to maintain compatibility with MariaDB
    • Minimum Java code impact
    • 50% of tables (with postfix as _ATTRIBUTES, _PROPERTIES, _META METADATA, _OCCURRENCES, _CONSTRAINTS, _TARGETS, _TRIGGERS and _INPUTS) will be removed
    • Unit tests not need to change
  2. ToscaServiceTemplace as Unique Json String:
    • One big Json for each model (e.g. saving the whole ToscaServiceTemplace as Json)
    • Using jsonb only PostgreSQL, will be supported
    • Medium Java code impact: all persistence classes could be removed or have to be equal to original model
    • 90% of tables will be removed
    • Unit tests need PostgreSQLContainer
  3. Cassandra
    • Document oriented approach full supported by SpringBoot (not needs Converters)
    • Huge Java code impact: All repositories and all persistence classes have to change
    • No support for MariaDB and PostgreSQL anymore
    • Unit tests need an Embedded Cassandra Server (EmbeddedCassandraServerHelper or CassandraContainer)

...