Don’t panic! A converged database doesn’t mean the return of monolithic databases

Don’t panic! A converged database doesn’t mean the return of monolithic databases

There’s this moment when I’m talking to developers, and I show an image of a converged database with the many data types and workloads it handles, and I see some of them tune out. “Not the same old monolithic database,” they seem to be saying to themselves.

No alt text provided for this image

“Wait,” I say. “Don’t let that image fool you.” 

Here’s what I mean: A converged database is worlds away from a monolithic database. Yes, it’s multi-model and multi-workload, but it’s also multitenant. And when you put those together, you get an architecture that supports all the latest development methodologies, including microservices, making app dev easier and way more manageable than if you build apps using multiple single-purpose databases.

What makes microservices great is that each application module can be built and deployed in complete isolation from the rest of the application. This method creates greater agility because each service can be developed, upgraded, and deployed independently. It also offers higher availability because if one microservice goes down, the other microservices remain open for business.

For all its advantages, however, microservice architecture comes with a ton of complexity. In fact, I recently saw Uber is moving away from microservices in some instances because testing and maintaining thousands of microservices “is not only hard - it can cause more trouble long-term than it solves in the short-term.”

Oracle’s converged database is designed precisely to solve this complexity problem. “So stick with me for a sec,” I tell my developer audience.

There is one physical, container database, that contains three pluggable database one for the product catalog, which is a document store. Once for the orders, which is a transaction processing databases. And one for delivers which is a spatical database.

Oracle makes it simpler to deploy microservices with its multitenant architecture by allowing each microservice to store its data in a logically separate data container called a pluggable database. For example, one pluggable database in your application might be a JSON document store, another could be a graph database, another could be for relational data, etc. And all these pluggable databases are combined into a single physical database that you can support holistically.

The several data stores plugged into that one physical database can all be upgraded and backed up together, making it much easier for you to keep the various microservices in synch. And suppose one service does need to move to a different database software version or suddenly has new high availability requirements. In that case, it can be easily unplugged from its current physical database and plugged into another one that meets those requirements without impacting the other services.

Not only that, if the functionality requirements for one of the services changes mid-project due to unforeseen business needs, then there is no need to panic. The technology you need to support the new requirement or use-case is built right into each pluggable converged database. So there is no need to spin up yet another data store.

In short—once I have the developers’ attention—my message is this: Use our converged database to take advantage of whatever data model you want and whatever data types your application needs, and run them as independent microservices. BUT do it in a multitenant architecture. That way, the microservices can easily communicate using data events rather than code events, and they are maintained together, so you get a synchronized view across all those databases. There’s nothing monolithic about that.

Converged database means letting your application architecture drive decisions, not the limited functionality of your databases. The Document modeling approach might be great on day-1, but will you need to go beyond that on day-365? Another area might look great for a relational OLTP database approach when you first start, but what if you need a bit of DW-style parallelism? Converged database lets your application architecture dictate by NOT forcing you into limited capabilities on each.

Seems to me that “monolithic” architectures that are/were used in development is pulling the underpinning tech into the categorization. What is more “monolithic” than the Linux kernel but that’s not pulled into the conversation. Why? because it is how Linux is used vs how it’s built itself. Maybe I’m wrong but I’d bet any tech stack at all could be built in a monolithic manner or in a micro/marco/rah/rah services architecture. It’s all about how one uses the lego block they are using.

כדאי לקרוא. אולי נפסיק להתיחס לפיתוח בסביבת Oracle ובכלל באחד משני הקצוות: פיתוח מונוליטי לחלוטין (כפי שעשינו לפי 30 שנה) או מיקרוסרביסים ופונקציות כפי שמדברים היום, ונפנים שישנה דרך 'נכונה' באמצע שבה גבולות ההפרדה של השירותים תואמים את יכולות הפיתוח וחשןב מכך את קיבולת הבדיקות הסבירות.

Great post, Maria. To the devs who say that the proof is in the pudding... Fair point -- Get a taste of microservices on Oracle's converged database on the self-service LiveLab workshop here: https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=637&clear=180&session=105905735601942

To view or add a comment, sign in

More articles by Maria Colgan

Others also viewed

Explore content categories