MongoDB at ShowClix

We recently spoke with Nate Good, Director of Software Engineering at ShowClix, about ShowClix's technology stack and use of MongoDB.

WHAT IS SHOWCLIX?

ShowClix was founded in 2007 as a live event search engine and has evolved into the full-service event ticketing system. Millions of tickets, three offices and two cereal walls later, ShowClix is the preferred ticketing solution for thousands of performing arts theatres, live music venues, and festivals â€â€ù as well as museums, non-profit fundraisers, nightclubs, even circuses and rodeos.

WHAT WERE SOME OF THE REASONS THAT LED YOU TO ADOPT MONGODB?

We use MongoDB as our Swiss army knife of data stores. It supplements our primary relational database, filling in the gaps that are far better suited for MongoDB’s document oriented nature. The three main ways we use it are:

· Membership Data: Our clients have the ability to import customer data into ShowClix to be used to authenticate against. The challenge is that each client may have a very different schema than the next. MongoDB’s schemaless nature lends itself very nicely to this problem by allowing us to store diverse data in a consistent and manageable way for our application.

· Auto Complete: ShowClix uses an auto-complete or “suggest” feature in several areas of the application, which must quickly scan millions of records to provide relevant search results to our clients. MongoDB serves as the index for this feature and leverage its left-anchored regex index support to make things snappy.

· Log Aggregation and Indexing: We use Scribe to aggregate the many types of logs across our many servers. However, once that data is aggregated, it sits in huge nasty flat files that can be a pain to navigate/search when they need to be accessed (grep/awk can only get you so far). We turned to MongoDB to help us make sense of our most important log files. These files are parsed and imported into MongoDB upon aggregation. This allows us to use MongoDB’s query engine to help us find the answers we need quickly. Additionally, we’re looking into using MongoDB’s newer aggregation framework and Scribe’s Thrift support to take this process one step further.

YOU ARE USING MONGODB WITH A RELATIONAL DATABASE. HOW DO YOU DECIDE WHAT GETS STORED IN MONGODB VS THE RDBMS?

For us, ACID compliancy, namely atomicity, is pretty important. We deal with financial transactions and finite resources like available seats in a venue. For this reason, much of our ticket reservation process lives in a traditional RDBMS. However, there are definitely areas where RDBMS falls short. The rigidness of RDBMS schemas can lead to some awkward “round peg in a square hole” situations. When we’re modeling data that is a little less predictable, MongoDB’s schemalessness is a natural choice. It provides the flexibility needed, with a feature rich query engine to boot.

HOW IS THE DATA MODEL FOR YOUR MEMBERSHIP DATA DIFFERENT FROM HOW YOU WOULD HAVE MODELLED IT IN A RELATIONAL DATABASE?

The data our clients collect on their members can vary drastically from one client to the next. Had we stuck with an RDBMS for modeling membership data, we would have had to choose from two awkward options: a) De-normalize the data into blobs and sacrifice the very features that make RDBMS’ great or b) Try to normalize the data and end up with a multi-table, key-value mess. With Mongo, we’re able to get the best of both worlds: a DB that models unique membership data in a natural, cohesive “document” and still provides a brilliant query engine.

YOU MENTIONED THAT YOU ARE LOOKING FORWARD TO 2.2. WHAT TYPES OF ANALYSES ARE YOU PLANNING TO DO WITH THE NEW AGGREGATION FRAMEWORK?

The 'GROUP BY’ clause in SQL is arguably one of its most useful features from an analytics standpoint. While we’re big fans of MongoDB’s map/reduce support, we’re very excited to see a more familiar analog to SQL’s aggregate support. We hope this will be a more natural transition into analytics in MongoDB for those on our team who are more accustomed to the SQL world. We’ll likely use it the most with our log dataset in mongo to get answers about user and system behavior.

Want to learn more? Visit ShowClix to learn about their innovative event ticketing software for managing every aspect of ticketing operations. Andâ€Â_ they're hiring!

Tagged with: showclix, search, tickets, MongoDB, Mongo, NoSQL, Polyglot persistence, 10gen

comments powered by Disqus