I like to see it this way and perhaps I am wrong...

They way you search on a database is using indexes. Indexes are trees 
(binary trees or b-trees, etc). They fast because the depth of the tree is 
log(N) where N is the number of the elements. You can insert, delete and 
search for items in tree very fast.  The information about your query 
propagates down the tree from its root to the leafs and the results 
propagates back to the root.

SQL databases are more than a collection of trees. They can do joins. They 
have transactions. These operation are non local. Think about updating two 
nodes of the tree which are on different branches (a transaction). That is 
complicated and expensive. Or think about joining data in one tree with 
data in another tree (left joins). Yes SQL databases are good at these 
things.

If you take a SQL database and remove non-local operations like joins, and 
transactions you are left with trees. Trees are fast and have other nice 
properties. You can for example store different branches in different 
servers thus making it scale at no performance cost. You can also keep 
copies of branches in different places thus making them resilient to server 
failures.

Moreover because all you have is a big tree of data, there is no need any 
more for the nodes to store the same type of information. So different 
nodes/records can store different types of data.

In my understanding this is what nosql databases are. Just databases 
without joins and limited transactions which are able to super-optimize 
whatever remains (insert and search). At first approximation they are 
key-value storage where the key is stored in the tree index and the value 
is a dictionary associated to the key. Some are more complex and allow you 
to search the values as well by distributing the query in parallel over the 
branches of the tree. Some have multiple keys.

If your data matches this model they are great. If you ever need to do a 
global search and replace or referential integrity or transactional 
integrity, forget it. 

Massimo









On Thursday, 23 August 2012 19:52:13 UTC-5, Niphlod wrote:
>
> Without hitting a "product vs product" issue... nosql dbs is just another 
> tool at the programmers belt.
> The "usually advertised benefits" are raw speed and scalability.  
>
> On Friday, August 24, 2012 2:01:03 AM UTC+2, apps in tables wrote:
>>
>>
>>  I think my problem is that my mind has been thinking for thirty years 
>> about applications in the sql database way.
>>
>> I don't know what the nosql database application structure will look like.
>>
>> this is not the problem of web2py.... web2py is full stack framework ( 
>> based on sql-like database (DAL) ).
>>
>> So, web2py will not get benefit from the nosql database feature.
>>
>> I think there are benefits for the nosql database, that i am not aware of.
>>
>> Anybody knows ??
>>
>

-- 



Reply via email to