As you probably know by now, we are using Couchbase for caching data on our web site. However Couchbase contains support for not just cache data, but also for persistent data that is stored on disk using a NoSQL architecture. Once we were actively using Couchbase for our caching tier, the next step was to use it for storing data. The first thing we decided to move to Couchbase, was our session data, which up until that point had been stored in MySQL.

Continue Reading →

In my previous blog post I discussed how we converted from a file based caching solution to one based on Couchbase. In this blog post I am going discuss the system we built to group cache entries together into logical groups, and the mechanism used to quickly invalidate all cache entries for a particular group using sentinels rather than lists.
Continue Reading →

Recently as we spent a lot of time trying to sort out performance issues on our web site, we spent a lot of time going over our caching system and working to improve it. Our old caching system was originally written to use the file system, which actually worked really well when the site used to run under Linux. But it was beginning to show it’s age and was really expensive to maintain, so we started looking for alternative. I looked at a number of different options, and had read a lot about memcached, but alas I could not find any good memcached implementations for Windows which I needed for our development and testing. That is until I came across Couchbase while I was researching the option of using NoSQL for parts of our web site for the future. Not only is Couchbase a super fast NoSQL database, it is also entirely memcached compatible so makes is a great commercial memcached implementation. And it runs on Windows!


Continue Reading →

The software that runs our site originally started out based on an Open Source project called osCommerce, which is written in PHP. The back end database has always been MySQL, so all our initial code was originally written in PHP. As the business grew, we quickly realized that we needed some back end software that ran natively on the desktop, rather than in the browser as we needed to integrate with barcode scanners, label printers and other hardware devices, which simply cannot be done easily from a web site running in a browser. To build the software, given my background in device driver development I naturally decided to use C++ on the desktop and write the programs with a cross platform user interface called Qt. So off I went and started writing a C++ desktop application that would communicate with our PHP based web server running on Linux.

Continue Reading →