views:

463

answers:

2
+1  Q: 

BigTable vs noSQL

  1. may i know in 'nosql' there is limitation just like bigtable where we should 'denormalized' our table/entity ?

  2. any api wrapper that allow we to write code once and can be used for google app engine bigtable and nosql ? (something like hiberanate)

+2  A: 

Yes, for example in MongoDB you don't have joins since it is non-relational, so it does change how we store and browse the data.

As MongoDB is non-relational (no joins), references ("foreign keys") between documents are generally resolved client-side by additional queries to the server. Two conventions are common for references in MongoDB: first simple manual references, and second, the DBRef standard, which many drivers support explicitly.

It seems that the consensus is to denormalize and duplicate to accelerate the reads to avoid the cost of joining distributed data all toghether, with the join and merge logic done on the application level.

As to whether it is an absolute requirement to denormalize the database, I am not sure (other SO members can probably enlighten us). But I think the database should be modeled with these "limitations" in the mind along with a good study of how the data is going to be queried. This should give the least impedance to the process.

See Also:

http://stackoverflow.com/questions/1496518/bigtable-database-design-theory

http://stackoverflow.com/questions/445827/gae-how-to-live-with-no-joins


Any API wrapper that allow we to write code once and can be used for google app engine BigTable and nosql ? (something like Hibernate)

JDO is datastore-agnostic, so it might just provide what you want to some extent.

Seems there are lots of recent projects to use JDO and JPA with "NoSQL" products.

See:

Datanucleus-Cassandra

Datanucleus-Cassandra-Plugin

Bakkal
You can also add one further DataNucleus Cassandra plugin http://github.com/tnine/Datanucleus-Cassandra-PluginThe idea is that these will get merged at some future stage (the one I quote includes some things from Pedro Gomes' version).
DataNucleus
+1  A: 

Any API wrapper that allow we to write code once and can be used for google app engine BigTable and nosql ? (something like Hibernate)

While abstraction libraries definitely help portability, you have to take into consideration the particular platform you're running on. If you're going to go with Google App Engine, you have to be aware of the incurred startup costs inherent with additional abstraction libraries.

You should weigh the pros and cons of using something like JDO or JPA. Also take a look at the Objectify library that offers a more native interface that has the downside of being coupled to the App Engine Datastore.

Arthur Kalmenson
i dont aware of any abstract wrapper library exist
cometta