RFC: Migrating properties to json/jsonb data type

Hello everyone.

Over the last few months I’ve been working on larger Neos projects and experienced many performance issues. I will adress one of those in this RFC.

Eel queries give you the ability to filter nodes by property, just like this:

${q(site).find('[instanceof My.Site:Page][showInSitemap = true]')}

This feature is very helpful in a variety of cases – but due to the way it is currently implemented it is also very slow. This query would cause Neos to get all nodes of type My.Site:Page from the database and then filter them by property in PHP.

There are other places where Neos needs to perform equal tasks, e.g. NodeSearchService uses a LIKE string search to filter nodes by property but that’s not much better.

The proposal

  • Migrate the properties column of the neos_contentrepository_domain_model_nodedata table to JSONB (PostgreSQL) and JSON (MySQL/MariaDB)
  • Make Neos use the DBMS advanced querying capabilities for those data types

Request for comments

Neos already requires very current versions of the supported DBMS and this step seems logical to me. In fact, I am wondering why it has not been done yet and suspect it might be a larger task. I will hopefully be able to attend the Neos sprint in Salzburg in November 2018 and would like to (try to) implement this while I’m there. Do you see problems with my proposal? Can this be done within a few days? What could go wrong?

Have a nice day,
Florian

6 Likes

Hey Florian,

would be awesome to have this :heart:

All the best,
Sebastian

1 Like