We’ve been seeing a renewed interest in two different areas in databases – embedded databases and large-scale enterprise systems. Sure, the core database audience remains in the department-level and higher sized machines, but as developers are working on more and more disconnected systems, there’s more of an uptake on the databases that they can embed right into their code. And there’s no shortage of databases you can use. In the past I’ve just coded my own, but there’s really no reason to do that anymore. There are lots of options from open-source to major vendors for placing a database in your code. I’ve been using SQL Server CE for my latest adventures, since I can also use SQL Server on my Smartphone, and I can interface CE to the larger systems I work with.
And that brings up the other side of the coin. With so many distributed databases being written, you’ve effectively spread out your application and data-manipulation landscape to hundreds of more systems. And all that data has to go somewhere. Usually that’s a corporate or organizational system that was once smaller, and is now being asked to do a lot more work. So people are morphing their mid-range databases to truly enterprise systems, and some are starting to put in Service Oriented Architecture (SOA) systems to deal with the concurrency issues.
This new data spread brings up some interesting challenges, such as security and storage management. But for my group specifically, it brings up some real management design questions. We keep in mind that you may have to manage dozens of small systems, lots of mid-range systems, and possibly multiple large scale systems. We try to keep things simple and consistent, given the different things you have to do to each of those system types, and at the same time provide platforms (like the new Declarative Management Framework in 2008) that don’t dictate to you how to do things – they provide a way to do anything you want.
So what are you seeing? More of the same, or lots of small and large?