Etikettarkiv: couchdb

NoSQL: Redis, CouchDB och MongoDB prestanda

Eftersom jag testar NoSQL-mjukvaror såom Redis, CouchDB och MongoDB just nu  så genomförde jag ett litet prestandatest där Redis vann över CouchDB och MongoDB.

Så här lång tid tog det att stoppa in 100 000 objekt i en databas:

MongoDB

db version v1.2.2, pdfile version 4.5
real    13.306s
user    9.130s
sys     0.940s

Redis

Redis version 1.3.17
real    7.044s
user    5.330s
sys     0.070s
Redis version 2.1.5 (8d3e063a:0)
real    6.400s
user    4.760s
sys     0.110s

CouchDB

Apache CouchDB version 0.10.0

Fick inte vara med för att det tog 4 sekunder att sätta in 100 objekt. Ungefär samma prestanda som Amazon SQS, och då använde jag även full_commit=False vilket bör öka prestandan. Ska testa Hovercraft för att se om jag kan få upp prestandan.

Observera även att ovan tid inkluderar exekvering av Python, inladdning av moduler samt den kod som körs mellan det att information trycks in.

MongoDB – Test av NoSQL, del 1

Som läsare av denna blogg så vet du nog vid det här laget att jag har en stor kärlek till det som kallas för NoSQL. Dvs systemlösningar som inte enbart innefattar SQL.

Tre av de stora kandidaterna till att snabba upp MySQL eller byta ut MySQL helt heter Redis, CouchDB samt MongoDB men vilken ska man välja? Som du kanske förstår så finns det inget bra svar på detta men jag tänkte här nedan försöka ge en liten inblick hur det är att installera och använda respektive dokumentcentrerad (icke SQL) databas.

Andra NoSQL-system som är värda att nämna är Neo4j, Tokyo Cabinet, Memcache samt Cassandra.

Bakgrund MongoDB

Används av sajter såsom bit.ly och foursquare. Utvecklat i C++ och överbryggar RDBMS och nyckel-värde lagring.

Installation MongoDB

Installationen gick mycket smidigt på mitt Ubuntu 10.10 system med hjälp av apt:

$ sudo apt-get install mongodb-server

Då installeras MongoDB, xulrunner samt så läggs en användare vid namn mongodb upp. Mongodb lyssnar även på två TCP-portar på 127.0.0.1

För PHP-stöd till MongoDB så kan pecl-porten användas och installeras på följande sätt:

$ sudo pecl install mongo

Om du får ett felmeddelande i stil med:

sh: phpize: not found
ERROR: `phpize’ failed

Så måste Ubuntu-paketet php5-dev installeras där phpize ingår. För att sedan få php att ladda in mongo-modulen så kan följande kommando användas:

$ sudo sh -c ”echo extension=mongo.so > /etc/php5/conf.d/mongo.ini”

För att sedan använda MongDB så kan exempelvis följande PHP-kod användas för test:

<?php

// connect

$m = new Mongo();

// select a database

$db = $m->comedy;

$collection = $db->cartoons;

// add an element

$obj = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" );

$collection->insert($obj);

// find everything in the collection

$cursor = $collection->find();

// iterate through the results

foreach ($cursor as $obj) {

echo $obj["title"] . "\n";

}

// disconnect

$m->close();

?>

För att sedan verifiera testa:

$ php mongodb.php

Så bör följande visas:
Calvin and Hobbes
Andra inlägg i denna serie kommer snart.