In CouchDB si utilizza la mappa/ridurre Vista. In SQL devi dire esplicitamente per quale indice di campo verrà creato. In CouchDB si scrive indice di creazione di funzioni personalizzate, quindi può essere più specifico per le proprie esigenze. Se si desidera che l'indice per una cosa così semplice come una ricerca con il nome, stato e paese campi la vista è semplicemente una funzione di mappa:
function (doc) {
if (doc.name && doc.state && doc.country)
emit([doc.name, doc.state, doc.country], doc);
}
effettuare la ricerca utilizzando questo punto di vista si cerca la chiave ["my_name", "my_state", "my_country"]
. È possibile utilizzarlo per eseguire query con sottoinsieme di nome, stato e paese purché siano un prefisso dell'array emesso (ad esempio, ricerca con name
ma non con state
e country
) perché il risultato della ricerca della ricerca è ordinato lessicograficamente.
In linea di principio, la vista è indice con alcune funzionalità delle query, non flessibile quanto le query SQL. Vengono eseguiti una volta e memorizzati su disco e calcolati in modo incrementale per i dati nuovi/modificati. Ricorda che è difficile fare cose che sono inefficienti nel sistema distribuito (per cui CouchDB è progettato): join più complicati, ricerca senza indice ... Anche se, in molti casi, la divisione artificiale per le tabelle nel modello relazionale non è necessaria quando è strutturata i documenti sono disponibili e alcuni dei join non sono necessari.
Per un breve confronto tra CouchDB e SQL, vedere il documento this chapter of The Definitive Guide e altri capitoli e lo wiki ufficiale per ulteriori informazioni sulle viste.
fonte
2013-03-07 19:10:43
Credo che la vera questione è cosa fare quando si dispone di un elevato numero x di campi e non sai quale combinazione di criteri di ricerca l'utente è intenzione di filtrare per. Se si dispone di 20 campi, non è possibile creare le viste 2.432902e + 18 necessarie per gestire tutte le combinazioni di potenziali criteri di ricerca. Puoi avere 20 visualizzazioni e poi provare ad intersecare le viste in qualche modo? –
CouchDB non è un database universale. È necessario progettare la struttura dei dati (schema e viste dei documenti) per casi d'uso specifici. Sebbene siano query multidimensionali e non disponibili senza plug-in aggiuntivi (come GeoCouch o l'utilizzo di lucene/elasticsearch), puoi provare ad evitarlo. La semplice traduzione di SQL alle viste e la mappatura del design relazionale ai documenti JSON non è sufficiente. –