Big Data, a relatively new phenomenon driving the industry hype-cycle is a mainstay in the database business. IT companies are convinced over the endless value proposition of the operational insight that comes with leveraging Big Data ( or Big Small Data ), so much so that it’s easy to overlook its impact on traditional database technologies and practices.
To tame the beast of the expanding data deluge, organizations are pursuing NoSQL Database Management Systems (DBMS) to avenues no longer appreciating the existence of age-old Relational Database Management Systems (RDBMS) that nurtured Big Data in the first place. Many organizations are aiming to replicate the NoSQL movement of Google and Amazon in discovering sweet spot performance and productivity with their backend database investments to an extent that they completely ignore the following database best practices in favor of one database management system over another:
- Design databases upfront with a focus on everlasting company data instead of temporary applications.
- Database is not a black box. Incorporate reusable design features and functionalities, lest you rebuild validation and backend logic for every new application individually.
- Take onboard DBAs in the design phase as part of a DevOps strategy.
- Construct well-documented data models before writing the application code.
- Devise appropriate data interaction strategies.
- Model with multiple perspectives since optimal structures for one use case may not work well for another one.
- Go with multiple database management systems. Use a NoSQL database for user data and session data, or use an SQL database to aggregate unstructured data and correlate disparate data types.
- Build the best backend for all types of applications.
These best practices encourage the use of NoSQL DBMS in achieving high scalability, bypassing limitations surrounding data storage capacity, reducing OpEx, integrating caching and limiting application disruptions as database schemas change. However, businesses cannot disregard the importance of traditional RDBMS in handling, storing and protecting sensitive business information for secure, reliable and efficient use in boring back-office transactional applications.
And instead of pondering over the inconclusive debate of RDBMS vs. DBMS, IT departments can leverage a host of solutions to bridge the narrowing gap between SQL and NoSQL such as Splice Machine. Tools such as MongoDB enable high performance, availability and scalability with NoSQL DBMS and RedGate and Datical enables secure and efficient execution of database changes to ensure key strategic advantages of the DevOps approach: continuous integration, continuous delivery, efficient development and fast feedback to backend database systems.
In the modern Dev shop however, it is not one or the other. There will, in the near term at least, always be a need for relational databases for things like discrete transactions, user sessions, and user information. We are no longer in a situation where it is just one tool for the job, today it’s the best tool.
These advanced databases are easier to install and manage, reducing concerns surrounding complex, resource intensive and time consuming backend database management processes such managing failover, optimizing performance and load balancing.
Database Automation and the DevOps Gap
Database delivery has taken a back seat to source code even in the DevOps environment where Devs and Ops focus on agility in their own respective areas, leaving database automation to play catch up as DevOps teams are stuck in the manual database delivery purgatory. Mistrust of database automation is the primary barrier to efficient and continuous database delivery. To bridge this gap, DevOps teams must follow the same principles of automation, collaboration and agility for backend database management that apply to development and operations processes.
For the DevOps aspect, a good database design means less changes to databases to enable efficient testing and service virtualization. Progressive DevOps teams must focus on core tool categories for configuration management, application deployment, monitoring, version control and testing, among others. At the same time, malpractices such as treating database management as an afterthought and not picking the right database management system during early stages of the software development lifecycle can prevent successful adoption of the true DevOps movement.