SQL vs NoSQL: qualche riferimento per la valutazione

venerdì 24 settembre 2010 - 16:23

di Claudio Garau

Forse non tutti sanno che NoSQL non è il nome di un linguaggio alternativo (e contrapposto) all’SQL, ma quello di un vero e proprio movimento nato per promuovere nuove metodologie per l’archiviazione dei dati, slegate dal modello relazionale; fondamentalmente i sostenitori del NoSQL sviluppano un punto di vista basato sui seguenti concetti:

  • liberazione dai vincoli dovuti ad uno schema tabellare;
  • limitazione o eliminazione totale delle operazione di join;
  • scalabilità  orizzontale;
  • utilizzo di manager per basi di dati alternativi agli RDBMS.

Il movimento NoSQL ha mosso i primi passi nel tecnologicamente lontano 1998, ma il dibattito intorno ad esso è tornato in auge negli ultimi tempi grazie all’integrazione di soluzioni non relazionali in piattaforme concepite da importanti realtà  del Web; possono quindi essere utili alcune risorse per l’approfondimento:

Aldilà  dei dibattiti e delle posizioni di principio, tra metodologie contrappose è sempre meglio utilizzare quella che si adatta maggiormente alla realizzazione del proprio progetto.

Categoria: PHP e Open Source | Commenta

Commenti per SQL vs NoSQL: qualche riferimento per la valutazione

beh dal 98 a oggi non si é visto granché, mysql spopola, oracle regna nel mercato che conta, db nosql non se ne vedono. Questo é tutto dal punto di vista commerciale, su quello tecnico devono ancora arrivare esempi convincenti.
Dal punto di vista dei programmatori é un po’ la storia di photoshop, tutti lo usano perché nelle scuole di grafica si insegna solo quello (es in canada usano tutti corel photopaint…), quindi se tutti studiano solo sql é logico aspettarsi che conoscano solo sql

# - Postato da Mik 24 settembre 2010 alle 17:20

a me sono arrivate richieste (poi non concretizzate) di allestire dei server con mongodb.
Ho fatto dei test (di funzionamento, non di performance) su delle macchine virtuali e… boh: se questi possibili clienti dovessero tornare alla carica farò dei test più approfonditi

# - Postato da XarFace 24 settembre 2010 alle 18:38

Io sto valutando da un paio di settimane mongodb per sostituire mysql su grosse quantità  di dati (1,5 milioni di record):
- sulla fase di inserimento stravince mongodb, in quanto basta fare insert->($ar) dove $ar é un array associativo, mentre con mysql per fare la stessa cosa devi utilizzare un ORM, altrimenti devi scriverti funzioni di creazione dell’sql
- dimensioni fisiche vince mysql: 750 mega contro 6 giga
- ricerca vince mongodb: (creando gli indici sui campi ricercabili) all’inizio sono rimasto un po’ spaesato sulla sintassi di ricerca (ad es: se cerchi su un campo titolo “La casa del Manzoni” la parola casa non ritorna niente, devi eseguire una ricerca regex /casa/i , ed é velocissimo
- possibilità  di creare con funzioni mapreduce liste/collezioni separate: in pratica si cicla sui risultati di una ricerca filtrandoli con una funzione (map) che poi li passa ad una seconda funzione (reduce) per l’elaborazione ed eventuale salvataggio. Unico limite 4 mega per l’oggetto temporaneo (che può sembrare poco, ma se lo superate probabilmente non avete bisogno di mapreduce)

In conclusione sono rimasto soddisfatto e spero entro fine anno di passarlo in produzione

# - Postato da markux 25 settembre 2010 alle 09:11

su server ho installato mongodb e ho fatto dei test.
Confermo anche io che su inserimenti non ha eguali, mysql lo vede con il binocolo, per quanto riguarda la velocita di ricerca ho fatto dei test.
Ho un sito che stà  soffrendo con mysql e cerco una soluzione. Database da 9 giga. Ho caricato tutto su Mongodb, in 5 ore ho caricato tutto sono rimasto sbalordito, con mysql una migrazione di dati mi costa 5 giorni. insert ok quindi.
Anche la velocità  di ricerca é impressionante ma non posso fare paragoni specifici.
Sono giorni che leggo le query di mongo, se non mi sfugge qualcosa direi che se fai delle query pesanti mongo va in tilt. peccato ero molto garato, ma quando ho avuto bisogno di certe query non si muoveva.
Esistono anche delle query che fai comodamente in sql e con mongo non puoi fare.
per esempio
SELECT * FROM table WHERE (a=1 or b=1) or (a=2 or b=2)
la stessa query su mongo sarebbe
premetto che ho indicizzato i db mongo e ottimizzato.

mongo> db.table.find({$and:[{$or:[{a:1}, {b:1}]}, {$or:[{a:2}, {b:2}]} ]})

Questa di sopra é la traduzione naturale,
se la fai va in tilt.
l’errore é quello di pensare in sql, mentre invece pensando in nosql la query naturale é un’altra.
vi riporto sia riga di comando che perl, poi dopo vi allego c++
##########
PERL

use MongoDB;
use MongoDB::OID;
my $conn = MongoDB::Connection->new;
my $db = $conn->database;
my $users = $db->database;

my $all_users = $users->find(
{
‘$and’ => [{ "a" => {'$in' => ["1" ,"2"]},
“b” => {‘$in’ => ["1" ,"2"]}}],
}
);

mongodb query =
db.database.find({ $and: [{"a" : { $in : [1,2]}, {“b” : { $in : [1,2]} })

########
cosi la query risponde in un tempo impressionante,
su 20 milioni di dati come tocchi ti da risposta.
però c’é un problema.
se devo fare una ricerca su più valori ed estrarre i valori che corrispondono ad uno o due, se solo un campo non ha uno o due non estrapola.
mettiamo per esempio-
db mysql
id, c1, c2, c3, c4
se io devo cercare “casa mare” sul db in mysql faccio
SELECT * from table where
(c1 =casa or c2 = casa, or c3 = casa or c4 = casa) and
(c1 = mare or c2 = mare, or c3 = mare or c4 = mare)

quindi in mongodb abbiamo detto
db.database.find({
$and:
[{"c1" : { $in : [casa,mare]},
{“c2″ : { $in : [casa,mare]}
{“c3″ : { $in : [casa,mare]}
{“c4″ : { $in : [casa,mare]}
})

Allora in mysql se c1 contiene casa e c4 contiene mare
tiro fuori i dati di quella riga, mentre in mongo no.

in mongo se tutti i campi non hanno o casa o mare il risultato é zero.
sono giorni che ci provo, penso che sia ancora giovane e che le query non siano complete, certe query non si possono fare.

Altra cosa molto interessante di mongo sono la velocità  di ricerca con espressioni regolari, cosa che con mysql é impensabile con database di queste dimensioni.

Purtroppo però, le query per ora sono molto limitate.
Ho sentito parlare bene di cassadra, purtroppo però esiste una scarsissima documenteazione.

# - Postato da fabio 21 maggio 2012 alle 21:07

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>