Versions Compared

Key

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

...

Testing shows there was no increase or decrease in performance compared to master branch after arrays were used.

Disadvantage: extra dependency

Extra dependencies could add possible risks of dependency issues, security issues, etc. in future.

The new dependency is an updated version of an existing dependency (hibernate-types-52) - the developer renamed the library at some point. More info here: https://vladmihalcea.com/hibernate-types-hypersistence-utils/

Disadvantage: Limited array type support

...

Side note: in the above case, if using auto-generated SQL from the method name, the SQL generated using the anchor ID will be simpler than when using AnchorEntity objects, as Hibernate will generate a JOIN between FragmentEntity and AnchorEntity in the first case, but will only use FragmentEntity in the last case. So while the types are more restrictive, it may result in more optimal SQL code.

Advantage: Code already using Postgres arrays can be simplified

...

  • More testing is needed to confirm if list partitioning drops performance with large datasets.
  • Solution #1 is explicit using 32K batches, so easy to understand what it does
  • Solution #2 has shorter code, but not very obvious to the reader what it does
    • We could add a comment linking to this ticket to explain the 32K limit and why arrays are used
  • Solution #2 simplifies code in the cases when we need Postgres array support.
  • It's possible to use both solutions, where most appropriate.