Database
 sql >> Database >  >> RDS >> Database

NoSQL:la vita senza uno schema

NoSql non è un sostituto dei database SQL ma è una valida alternativa per molte situazioni in cui l'SQL standard non è l'approccio migliore per archiviare i tuoi dati.

Poiché ci è stato insegnato che ogni volta che devi archiviare dati in un "data warehouse" e interrogarli per l'estrazione, SQL è la soluzione migliore, devi solo decidere quale motore SQL utilizzare e il gioco è finito.

Nel 2012 questo suggerimento era sbagliato, voglio dire che non puoi più presumere che SQL sia "l'unico modo" per archiviare i dati, ma dovresti sapere che ci sono altre alternative e si chiamano NO SQL. Sotto questo termine, abbiamo diversi meccanismi di archiviazione che non sono basati su SQL, e in .NET abbiamo un prodotto eccezionale chiamato RavenDB (puoi trovare un'ottima introduzione a RavenDb nel blog di Mauro).

La prima grande differenza con l'SQL standard è l'assenza di uno schema

Una delle limitazioni più fastidiose di SQL Server è la necessità di specificare il formato esatto dei dati che desideri archiviare nella tua memoria. Questo è necessario per molte buone ragioni, ma ci sono situazioni in cui non ti interessa davvero, specialmente se il tuo software è in gran parte basato sul concetto OOP. Supponiamo di avere questo oggetto

1: class player

2: {

3: public String Name { get; set; }

4:

5: public DateTime RegistrationDate { get; set; }

6:

7: public Int32 Age { get; set; }

8: }

Per un momento non c'è alcuna preoccupazione che questo oggetto sia incapsulato male (ha un metodo pubblico per ottenerlo e installarlo), ma si è concentrato solo sulla necessità di "memorizzare" questo oggetto da qualche parte. Se utilizzi un repository SQL standard, la prima cosa che devi fare è creare una tabella, quindi definire le colonne, definire la lunghezza massima per la colonna Nome e infine selezionare l'ORM da utilizzare o creare un livello dati dedicato e infine, puoi salvare l'oggetto.

Se stai lavorando con un corvo, questo è l'unico codice di cui hai bisogno

1: var store = new DocumentStore { Url = "http://localhost:8080" };

2: store.Initialize();

3: using (var session = store.OpenSession())

4: {

5: var player = new Player

6: {

7: Age = 30,

8: RegistrationDate = DateTime.Now,

9: Name = "Alkampfer",

10: };

11: session.Store(player);

12: session.SaveChanges();

13: }

Il server prende semplicemente l'oggetto e lo salva.

Per salvare un oggetto nel data warehouse sono necessarie solo due funzioni:“Salva” per indicare al repository l'oggetto che si desidera salvare, e “SalvaChanges”, che esegue effettivamente il salvataggio.

Cosa ottieni con questo semplice frammento di codice? Basta andare al browser standard all'indirizzo del server e dovresti vedere il contenuto del database.

Contenuti del database dopo un semplice inserimento di oggetti

In figura, puoi vedere il contenuto del corvo del database, contiene un giocatore e un piccolo 1 accanto all'oggetto è Id, che Raven usa internamente per identificare in modo univoco questo oggetto. Un altro oggetto, chiamato Sys Doc Hilo / Players, si occupa di generare un identificatore per l'oggetto Players con l'algoritmo Hilo.

Questo è tutto, non è necessario definire lo schema, non è necessario avere una proprietà Id speciale o qualsiasi altro requisito per rendere l'oggetto compatibile con il repository, basta chiamare il metodo Store per qualsiasi oggetto .NET e il tuo oggetto è nel database, Punto!

Steven Lott | NoSQL non significa Nessuno schema