High-Performance Order Storage: progress report

In January, we published the initial plan for the Custom Order Tables feature and since then, we’ve been working hard to bring the High-Performance Order Storage (HPOS) to WooCommerce Core. In May, we invited you to test the order migration process and provide feedback on how our initial work performs on real stores of varied configurations.

Now, we’re excited to share the progress we’ve made in the last couple of months and the timeline of changes that await WooCommerce in the context of migration to High-Performance Order Storage. Over the coming weeks, we’re going to share with you different aspects of the solution in deep dives and we’d love to hear your feedback and anything you’d like to share with us. The areas we plan to cover are the following ones:

  1. Revised Database Schema
  2. Backward Compatibility and Synchronization
  3. UI and API changes
  4. Performance
  5. Testing
  6. Extension Compatibility

If you’d like to see us cover any other topics in detail, please let us know in the comments.

Naming convention

We’ve decided to rename Custom Order Tables to High-Performance Order Storage to make it more clear and more understandable what this change is about and what it should bring everyone. We want our users to understand the why of our work more easily. We also understand that the original name has been around for a long time and some people might still prefer it over the new one, and that is, of course, fine. 

Expected timeline

We’re nearing the end of the implementation phase and have already started upgrading other Woo-owned extensions. We’ve also started testing the solution extensively with our quality and excellence teams. That’s why we’d like to invite you all to start testing with us very soon as well. 

If all goes to plan, we will fix any large bugs and be able to present to you the feature complete version for the WooCommerce November release (version 7.1), but this timeline depends on the number of defects we discover during the testing phase. Also note that this means the core implementation is production ready, not necessarily that every extension or plugin a site may use is compatible yet.

After the first production release, the HPOS feature will continue to be opt-in and we will assist developers in making their plugins compatible with HPOS, closely monitor how many extensions are compatible and how many stores are actively testing the feature.

We believe it should be possible to stop the synchronization process and make HPOS the default experience in WooCommerce by August next year.

Timeline

  • 2022-01-17: The first kick-off post for HPOS on the developer blog
  • 2022-05-16: Call for testing of the order migration data
  • 2022-08-01: WooCommerce-owned plugins are getting updated to be compatible with the HPOS feature
  • 2022-09-15: Public call for testing for the order sync, admin UX and extension/integration points.
  • 2022-09-19: Invitation for public upgrade party for extension developers
  • 2022-11-08: HPOS is feature complete and released with WooCommerce 7.1 for user testing
  • Fixing bugs and encouraging developers to make their plugins compatible with HPOS, encouraging users to test on their staging sites and report problems back to us
  • 2023-08-08: HPOS becomes the default experience for stores with WooCommerce 8.0: data synchronization with posts/postmeta tables will be disabled.

We hope you’re as excited as us to get this project tested in real world scenarios and are looking forward to working with our community to bring the best possible experience to everyone!

13 responses to “High-Performance Order Storage: progress report”

  1. thermesmarins Avatar
    thermesmarins

    Hello Peter
    The new name really means what it is, nice.

    About the “Custom” part being removed from the name, do I understand that the order table won’t be customizable right (ie add db fields)?

    Can’t wait to test it.

    1. That’s correct, the new order table(s) is not customizable by extension developers. We are introducing a new concept of “meta data” per order though (flexible/extensible for developers) along with a supported way to add your own tables if your data needs are more complex.

      1. christransfersystems Avatar
        christransfersystems

        Interesting. When you say “add your own tables”, could that be a table of sub orders?

        1. I only just now saw this — yes, you could conceivably add your own separate table to store “sub orders”, although depending on what you’re trrying to do — in the new structure we do still support something similar to WP’s core Post handling, where you can store orders within the same table, and reference another order as its “parent” (via the parent_order_id field).

  2. kisscodes1909 Avatar
    kisscodes1909

    Woocommerce is increasingly decoupled from the structure of WordPress and becomes more powerful

    1. shanibanerjee Avatar
      shanibanerjee

      We are still utilizing so much of the WordPress structure though, and if anything, we’re looking to enhance the entire process, not decouple it. So think of this as a way to expand and grow!

  3. Great work team and thanks for the update Peter!

    I’m wondering if it has been tested with WordPress Multisite with stores as the subsites? I’m guessing it would be fine.

    1. Peter Fabian Avatar
      Peter Fabian

      Thanks for the question! We’ll definitely be running tests also on Multisites with stores as subsites. Generally, this should work and each subsite would have its own set of order tables.

      1. Amazing. 🙌 Thank you!

  4. dimitrisv Avatar

    Great effort!
    I noticed that the transaction_id, ip_address, user_agent and customer_note fields are empty in the latest version of the wp_wc_orders.

    When is their due date? 😉

    Keep up the good work!

  5. dimitrisv Avatar

    One more thing: I know that that the order_items/itemsmeta are taken as given and are not part of this project.
    But it will be great if they can be moved to this effort and to also provide additional functionality that we would like to have in our meta-analyses (i.e. it will be good to know the exact time that each item was placed in the cart, sequencing etc.)

  6. […] let’s elaborate on what High Performance Order Storage is. It is a solution devised by WooCommerce themselves, providing easy-to-read and reliable […]

  7. […] let’s elaborate on what High Performance Order Storage is. It’s a resolution devised by WooCommerce themselves, offering easy-to-read and dependable […]

Leave a Reply

Your email address will not be published. Required fields are marked *