You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.4 KiB

Java ORM test

Initial assumptions

  • JPA is f***ing slow, due too many layers of abstraction
  • NO xml and other shit-styled non-code-like sources must be needed
  • no additional tools to work (only boxed with technology set or none is applicable)

Initila list of techs

Initial criteria

Must:

  • encrypted columns
  • no raw SQL for simple CRUD operations
  • support for PostgreSQL

Good to see if:

  • support for MariaDB
  • support extended PostgreSQL features (including json and array)
  • "N+1" problem automatic solutions (as much as possible)
  • ability to generate raw SQL (to be executed elsewhere)
  • support for binary (BLOB) storage and extraction (10Mb per record max)

Test plan

  • postgres version 14 & 14-alpine (test database performance baseline)
  • two databases (one with partitioning, one without)
  • tables per database
    • xxs [50 records]
    • xs [500 records]
    • s [5000 records]
    • m [50000 records]
    • l [500000 records]
    • xl [5000000 records]
    • xxl [50000000 records]
  • each test module starts a fresh copy of database
  • database content is procedure-generated
  • random sequences must be pregenerated to be exactly same for all tests (to eliminate test-path diviations)
  • random sequence for each test is unique and not intersect (to eliminate postgresql optimizations)

Requests plan

  • search
    • random get by id
    • find by integer equals
    • find by string equals
    • find by date equals
    • find by integer more X & less Y
    • find by float more X & less Y
    • find by date after X & before Y