Databases came in to store data in an accessible way for corporate processes to share. The database also to a degree applied some constraints on keeping data consistent through triggers, assertions, referential integrity, typing etc. At that point applications would be separate from data and make calls using a simple logical language.
Later came the current predominant paradigm of object orientation. Now the main feature of OO is you encapsulate data. If you want to record/retrieve data you need to call an object which makes sure you can only do the correct things with the data involved. Early systems like Smalltalk would hold all their data as an ever increasing run-time of objects. When OO took off with Java, people however reverted to old habits and stuck all their data into Oracle etc. Databases however encourage people to access objects' data not through the objects that are lovingly designed to protect it.
One big factor of databases is they use disc to persist the data. Nowadays you have huge real memory space and you can buy Flash memory for peanuts. The Gigabytes you need for a typical corporate 'database' can come out of your pocket money. With Flash, you don't need to worry. Power down, power up and your data is still their. Crashes - well flash must be hundreds of times more reliable than disc.
Currently of course it's not straight-forward to store your data in main memory. Programming systems tend to think there's just a stack and a heap; they're not built to deal with an additional "flash heap" (I'm assuming you need to keep a lot of your application in volatile RAM as Flash can only be used a limited number of times). However it's not a big step to move towards keeping all your data as directly-accessible objects rather than serializing them back and forth to disc, or other filestores.
So why are we still storing data in databases? Surely we've given enough money to Larry Ellison?.
Later came the current predominant paradigm of object orientation. Now the main feature of OO is you encapsulate data. If you want to record/retrieve data you need to call an object which makes sure you can only do the correct things with the data involved. Early systems like Smalltalk would hold all their data as an ever increasing run-time of objects. When OO took off with Java, people however reverted to old habits and stuck all their data into Oracle etc. Databases however encourage people to access objects' data not through the objects that are lovingly designed to protect it.
One big factor of databases is they use disc to persist the data. Nowadays you have huge real memory space and you can buy Flash memory for peanuts. The Gigabytes you need for a typical corporate 'database' can come out of your pocket money. With Flash, you don't need to worry. Power down, power up and your data is still their. Crashes - well flash must be hundreds of times more reliable than disc.
Currently of course it's not straight-forward to store your data in main memory. Programming systems tend to think there's just a stack and a heap; they're not built to deal with an additional "flash heap" (I'm assuming you need to keep a lot of your application in volatile RAM as Flash can only be used a limited number of times). However it's not a big step to move towards keeping all your data as directly-accessible objects rather than serializing them back and forth to disc, or other filestores.
So why are we still storing data in databases? Surely we've given enough money to Larry Ellison?.