GatherPress / gatherpress

Powering our community's event management needs.
https://wordpress.org/plugins/gatherpress/
GNU General Public License v2.0
94 stars 30 forks source link

[Proposal] Migrate GatherPress Events Data to Custom Table Structure #523

Open bhubbard opened 8 months ago

bhubbard commented 8 months ago

Is your enhancement related to a problem? Please describe.

Currently, the GatherPress plugin relies on custom post types within the WordPress ecosystem to store and manage data related to gatherings and events. While this approach aligns with WordPress conventions, it may not be the most efficient solution for handling the unique requirements and scale of the plugin as sites with large event totals continue to grow.

A notable example of the benefits of transitioning to a custom table structure can be found in WooCommerce's migration from custom post types to custom database tables for order management. This strategic shift resulted in significant performance gains, enabling WooCommerce to handle large volumes of orders more efficiently and effectively.

Designs

No designs, as the new custom table should still use the gutenberg editor, blocks, etc.

Describe alternatives you've considered

No response

Code of Conduct

patriciabt commented 7 months ago

From Feb 23, 2024 meeting notes:

Going into “Central” application on dot ORG Birgit: Custom tables not acceptable by community leadership. Mike: It is unavoidable for a project like this.

For information and about another plugin, this is the Slack conversation about custom tables on the wp org network.

Otto's reply:

I did look through it a bit, but I stopped when I saw that it uses custom tables. Using your own table will slow our progress down in getting it on org. Dotorg is a very big multi site system with several different database servers. Tables have to be specifically designed to work in it. Using your own tables in a plugin like this requires a lot more. Basically, we use hyperdb, and we will have to modify the settings for that to include the table. Additionally, the plugin can't create its own tables. We have to create it for them in advance.

Check with the meta team.

mauteri commented 2 months ago

Not sure I fully understand this proposed change as GatherPress already leverages a custom table that it uses to join on the posts table. It does this for start and end datetimes as well as timezone which is where a bottleneck would happen when trying to query events in a datetime order.