Aside from the google/bigtable scenario, when should not you utilize a relational database? Why don't you, and what in the event you use? (have you learn 'the hard way'?)
In my opinion, you should not make use of a relational database when any kind of these criteria are true:
- your computer data is structured like a hierarchy or perhaps a graph (network),
- the normal access pattern stresses reading through over writing, or
- there isn’t any requirement of ad-hoc queries.
Hierarchies and graphs don't translate well to relational tables. Despite the help of proprietary extensions like Oracle's
CONNECT BY, chasing after lower trees is really a mighty discomfort using SQL.
Relational databases add lots of overhead for straightforward read access. Transactional and referential integrity are effective, but overkill for many programs. So for read-mostly programs, personal files metaphor is a good example.
Finally, you just do not need a relational database using its full-blown query language if you will find no unpredicted queries anticipated. If you will find no suits asking them questions like "the number of 5%-reduced blue icons did we sell in around the new england arranged by sales rep?", there won't be, then you definitely, mister, can live free from DB.
The relational database paradigm makes some presumptions about using data.
- A relation includes an unordered group of rows.
- All rows inside a relation have a similar group of posts.
- Each column includes a fixed title and data type and semantic meaning on all rows.
- Rows inside a relation are recognized by unique values in primary key column(s).
These presumptions support simplicity and structure, at the expense of some versatility. Not every data management tasks squeeze into this type of structure. Organizations with complex characteristics or variable characteristics don't, for example. If you want versatility in places that a relational database solution does not support it, you should utilize another type of solution.
You will find other solutions for controlling data with various needs. Semantic Web technology, for instance, enables each entity to define its very own characteristics and also to be self-explaining, by dealing with metadata as characteristics much like data. This really is more flexible compared to structure enforced with a relational database, but that versatility has a price of its very own.
Overall, you need to use the best tool for every job.
See also my other response to "The Following-gen databases."
It is best to go to the High Scalability blog, which talks about this subject almost every day and it has many articles about projects that chose distributed hashes, etc. over RDMBS.
The fast (but very incomplete answer) isn't that all data translates well to tables in efficient ways. For instance, in case your information is basically one large dictionary, you will find most likely considerably faster options that common RDBMS. With that said, it mostly dependent on performance, and when performance is not an enormous concern inside a project, and stability, consistency and reliability, for instance, are, i quickly aren't seeing much reason for diving in to these technologies when RDBMS is an infinitely more mature and well toned plan, with support in most languages and platforms along with a huge group of solutions to select from.