- Date: May 25, 2017
- By: Elijah Bernstein-Cooper
In Durham, North Carolina there is a bridge. Street traffic goes under. Trains go over.
The bridge has a nickname.
It's called "The Can Opener."
The Can Opener has only 11' 8" of clearance.
Many box trucks, RVs, and commerical vehicles carrying loads are taller than 11' 8". When a too-tall vehicle tries to drive under the bridge, the roof catches on the bridge structure and the rooflines are peeled back.
Like a can of sardines.
Surely there are signs?
Large signs appear several blocks before the bridge. There is a sensor that detects overheight vehicles and triggers a flashing LED warning sign. The sensor also triggers a traffic light to turn red. Drivers of the over-height vehicle have 50 seconds to read the LED warning sign, and space to turn to avoid the Can Opener.
And yet, at the end of 50 seconds some drivers hit the gas. Full speed ahead.
And the Can Opener gets fed.
When it comes time to choose between a SQL database or a NoSQL database there will be no automatic sensor. No flashing lights. And no YouTube channel documenting disasterously wrong decisions.
But there are signs.
Here are five signs that it's at least time to sit down with some interested parties and have a discussion about possibly implementing a NoSQL database:
1. You're Going Agile
If you currently practice or are heading down the path of an Agile Transformation, take note.
Agile and traditional SQL databases don't always play well together. The Agile development approach requires a more flexibile and easily changed database schema. Relational databases aren't designed to do that. NoSQL databases are.
2. You Run Lots of Complex Queries
With a SQL database, when you pull a lot of tables into a query (or the same table recursively) you create monster SQL statements that can take forever to return results.
If you are often frustrated by complex, slow query results from your SQL database it's a good sign to start thinking about a NoSQL database, which often has a simpler data model leading to simpler queries.
3. Denormalizing Is Looking Attractive
Your DBAs have done everything they can to improve performance and it's still not acceptable. The only remaining solution is to:
- Denormalize the data
- •Create tables of pre-computed results
- •Copy the production database to create a reporting database
Push the pause button. Get the hive mind together. Take a fresh look at a NoSQL solution.
NoSQL databases are designed to process big datasets. They can "scale out faster" on cheaper hardware. They can also have simpler data models. Look to NoSQL to solve that performance issue rather than pushing a relational database into a non-relational model.
4. You Are Shopping for An Expensive Database Server
Some relational databases can only run on a single-instance server. If you are in that situation and shopping for high-end hardware to solve a performance or uptime issue, hold up.
Consider a NoSQL Database that can run either on a cloud-based service or on commodity hardware that you already own.
5. You're Spending More on DBAs Than Programmers
If you are spending more hours of labor on schema changes, tweaking of indexes, and scaling issues than you are building new features or new apps, consider that a sign.
Consider a NoSQL solution that's designed to have a more dynamic schema, process larger datasets, and scale up or out more efficiently.
If you see any of these signs, stop for the red light and take 50 seconds to give us a call. We can size up your requirements and see if you're safe to proceed.
Or, if you are the Can Opener's next meal.