Re: [Cppcms-users] high performance database
Brought to you by:
artyom-beilis
|
From: Artyom <art...@ya...> - 2010-06-19 08:26:29
|
Hello,
First of all CppCMS does not limit its users of any specific DB.
Use anything you feel well.
> I agree with you in choosing BerkeleyDB in CppCMS.
> BerkeleyDB was used
> in some database or distributed storage, like Amazon
> Dynamo, Voldemort
> Project, and HypergraphDB. Have you hear about voltDB?
>
At the beggining of CppCMS I wanted to use BDB as my primary
DB backend. If fact first version of CppCMS blog was running on BDB.
But I had dropped the idea of BerkeleyDB for several reasons.
1. BDB was really good for key-value storage, but in more complex
cases with multiple-indexes I found that traditional SQL
DB sometimes match it or even outperform it.
For example, I searched for session-storage-DB and found Sqlite3
faster with two indexes then BDB.
2. BDB has scalability issues. It is not client-server solution
so if you need to access same DB for writing from several nodes
it becomes very complicated.
3. BDB is very hard to maintain and update its schema, much harder
then SQL.
4. BDB has API is total disaster for normal programmer. Hard to understand
use and maintain.
Finally I decided to drop it as it didn't give me too much advantage
(if at all) and had lot's of disadvantages.
Of course, if the data storage you are looking for is Key-Value only
then it may be good idea. I think it is worth to take a look
on memcachedb for this purpose.
So at this point my own applications - blog, wikipp run on top
of MySQL that is quite fast.
> voltDB (relational & key-value DB) use ONLY memory to
> do ACID and
> transactional operation, and scalable to handle ten of
> thousands
> transaction per second. It provide in memory scalability
> that another
> in memory database didn't provide. They have 50 times
> performance
> compared to well known commercial database. They release in
> GPL v3.
Sounds interesting. But from what I see:
- It works in memory... How does it scales when DB size grows
to hundreds of GB?
- Its D requires running in hot cluster so each transaction should
be committed to other cluster to provide "D". So you always need
at least 2 nodes.
What happens if one crashes? How it provides D then?
Does it really faster then committing data to high quality
data-storage?
To be honest, it sounds really interesting.
But as I said, CppCMS allows you to use any storage you want.
Artyom
|