NoSQL introduction

xml, link.

xml, exaplle on the page.

JSON, w3.

image.

NoSQL. Types. yt.

NoSQL. 7 steps to understund NoSQL. A blog article.

NoSQL. https://en.wikipedia.org/wiki/Category:NoSQL.

Advertaisement: yt, relational vs. document-type NoSQL.

mongoDB. JSON. yt for a comparison (check minutes: 20, 26 for a text interface, 33 for a graphics). BeginnersBook.

Cassandra. a hybrid between a key-value and a tabular database. About NoSQL Casandra: yt from India (a nice NoSQL introduction)..

redis. in-memory key-value database

Column database type is a key-value related, with a timestamp added to solve a duplicity. See keyspace.


(source: Wikipedia)

Neo4j. graph storage and processing. yt(2min), yt(prezentace, 11min), a lecture.

InfiniDB. Each column of the table is stored separately, but SQL still works. yt.

Note - for application in Python (PyQt, Tkinter, WxPython, see here) , use Google.

>>> import redis
>>> r = redis.Redis(host='localhost', port=6379, db=0)
>>> r.set('foo', 'bar')
True
>>> r.get('foo')
'bar'
Discussion:

>One major, underlying difference is that NoSQL databases have a simple and flexible structure. They are schema-free.
> This means that NoSQL databases do not have a fixed table structure like the ones found in relational databases.
A key value pair structure is still a structure. Graphs databases (like neo4j) have a fixed structure. There are even tabular NoSQL DBs like HBase and Google's bigtable. Cassandra may use schemas.

> Also, when working with NoSQL databases, whether they are open-source or proprietary, expansion is easier and cheaper than when working with relational databases. This is because it’s done by horizontally scaling and distributing the load on all nodes, rather than the type of vertical scaling that is usually done with relational database systems, which is replacing the main host with a more powerful one.
I also don't agree. For example, I think is way easier to horizontally scale a cluster of MySQL/Percona DBs than a Redis one, which does not even guarantee data consistency. Saying that SQL dbs need to be scaled vertically is not true at all.

But what I think is really wrong about the Disadvantages part is missing the main point: NoSQL dbs are not relational. For some things, relational structures are perfect; for some things they aren't. The key when using NoSQL storages is to understand that they are an awesome tool that only fits some things, but not all. A lot of developers, specially when they are just getting starting into them, abuse them, using them in things on which a relational structure would be better.

I think this is like an article comparing a spanner with a hammer. You may be able to put a nail with by hitting it with a spanner, you may be able to make a remove a bolt using a hammer, but each one has their own ideal usages.

Note.

Horizontal scaling is part of error-protection (dependability) of the database. Using distributed databases, if part of system fails, system still works. About Oracle - see manual, explanation, "Understanding the Scalability in Oracle Database", why vertically.

Horizontally, it is easier to scale MySQL.

Note. ACID (atomicity, consistency, isolation, durability).