We recently had a customer ask about scaleability of BePro Listings and we thought a post would clarify this answer for everyone. Scale-ability is one of the biggest features that sets BePro listings apart from other directory options. This post will focus on technical aspects

BUILT TO LAST

You are right, wordpress search does not scale well if everything is stored in its tables. We see all of the competition using custom taxonomies to store content which requires 3 database table joins, for each value in each row thats returned by your search. This may seem convenient at first and gets the customer to buy the product, but obviously cannot scale.

Other than categories, we avoid using custom taxonomies for searchable data. *EACH* of our addons and the base plugin itself, creates a new table if its storing searchable information. That way, information cost N per set where N returns search results which do not need any referencing (listings). Now, since custom post types are 3 joins deep, each field needs to be looked up for each search result. So you get something like N * X * 3 * Y where X is the types of listings and Y is the number of listings. That means every listing you add to a search feature which works on custom post types, will make each and every search more taxing on your server. Our database calls were designed to be as efficient as possible.

TEMPLATE MANAGEMENT

For the listings, there is no wordpress loop. That process is intensive, pulling content that has absolutely nothing to do with our operations. Each of our listings are generated by templates. We launch each template iteration in a “for” loop. Checkout bepro_listings_frontend.php. The entire file is either functions called by templates, or functions that start the template process.

Since everything works on templates, BePro Listings can be implemented into any theme. In fact, we constantly have users bringing us their favorite directory design that they bought, and asking us to replace *ALL* directory features with BePro Listings. This is a no brainier, because you cant see the internals of themes until you buy them, while BePro Listings is wide open, allowing testing before you buy a thing. Users quickly find that popular themes usually (not always), have extremely bad code under the skin, preventing customization and expansion.

DATABASE EFFICIENCY

We also do our own database calls to retrieve all records that we manage. Please check our database function in the “bepro_get_listings” in bepro_listings_functions line 394. Look at how we retrieve information. You will notice how other functions are allowed to hook into the database request. This means, all of our addons communicate and share information instead of being standalone and initializing multiple database requests. We have not seen this anywhere else, it was engineered by us, and helps to set us apart from any competing solutions. So our addons scale operations at the rate “N”

When using custom post type search options, the string entered, must exactly match whats stored in the database. Consider how slow it would be for a custom taxonomy to compare date or price ranges. Yes it can be done and you wont notice a thing with a few listings and two search filter options. 5 filter options and 100,000 listings would be a noticeably degraded experience.

WE INTERFACE WITH WORDPRESS

So you may ask, how can we profess to be integrated with wordpress but not dependent on them. The short answer is, that’s not what we are saying. You see, there are trade offs and we believe that we have found the best balance.

A post is still created and stored with wordpress, including its categories and tags. This is why we are using wordpress, so why remove that functionality from it. Everything else, we store ourselves, in our own database tables. So, listing specific information and addons, don’t depend on wordpress to get their information.

Also, all events are triggered by wordpress hooks and filters. So both the database calls and the template creation is dependant on the wordpress architecture to function. Think of BePro Listings like a boat motor, it cannot do anything without the boat, but the boat doesn’t make it work.

THE ALTERNATIVES

You are 100% correct, when it comes to scaleability, there is no competition for BePro Listings. Look closely at all the “major directory solutions” on wordpress.org as well as off, and you will notice them slowly changing to imitate our template architecture. Thing is, most have to rebuild from scratch to imitate what we have done. We are still waiting for, someone, anyone, to prove us wrong

YOU CAN RUN A MILLION LISTINGS

In terms of amount of listings, we see lots of claims of 100,000+ from the competition. So we wont waste time with silly numbers like that. Obviously wordpress can hold 100,000 posts. The test comes when you have those posts and users are able to filter through the search results. So we will make it clear, not only can you create “blog posts” but they can actually be filtered across multiple options without impacting performance.

We trade convenience for better scaleability. If you are serious about storing large amounts of data and allowing users to filter through multiple data points, you need something built with that in mind. If you were building a real estate website, you would expect a real estate database table. Same thing goes for each niche. BePro Listings provides this behind the scenes with our niche market addons.

CONCLUSION

There is no competition for BePro Listings on the wordpress cms. BePro listings was engineered to scale from its database calls all the way to the template system. Give this system a try, its 100% free. If you like the plugin and need help expanding it, then we provide development support to customers daily.


Date: Architecture Built To Scale was last modified: May 13th, 2015 by BePro Software Team Management at BeProSoftware.com

Leave a Reply