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 |