Database
 sql >> Base de données >  >> RDS >> Database

NoSQL :la vie sans schéma

​​

NoSql ne remplace pas les bases de données SQL, mais constitue une alternative valable dans de nombreuses situations où le SQL standard n'est pas la meilleure approche pour stocker vos données.

Comme on nous a appris que chaque fois que vous avez besoin de stocker des données dans un "entrepôt de données" et d'interroger ces données pour l'extraction, SQL est la meilleure solution, vous n'avez qu'à décider quel moteur SQL utiliser et le jeu est terminé.

En 2012, cette suggestion était fausse, je veux dire que vous ne pouvez plus supposer que SQL est le "seul moyen" de stocker des données, mais vous devez savoir qu'il existe d'autres alternatives et qu'elles s'appellent NO SQL. Sous ce terme, nous avons différents mécanismes de stockage qui ne sont pas basés sur SQL, et dans .NET, nous avons un produit exceptionnel appelé RavenDB (vous pouvez trouver une très bonne introduction à RavenDb dans le blog Mauro).

La première grande différence avec le SQL standard est l'absence de schéma

L'une des limitations les plus ennuyeuses de SQL Server est la nécessité de spécifier le format exact des données que vous souhaitez stocker dans votre espace de stockage. Cela est nécessaire pour de nombreuses bonnes raisons, mais il y a des situations où vous ne vous en souciez vraiment pas, surtout si votre logiciel est largement basé sur le concept OOP. Supposons que vous ayez cet objet

1 :joueur de classe

2 :{/code>

3 :nom de la chaîne publique { get ; Positionner; }

4 :

5 :public DateTime RegistrationDate { get ; Positionner; }

6 :

7 :public Int32 Age { get ; Positionner; }

8 :}

Pour un moment, il n'y a aucune inquiétude que cet objet soit mal encapsulé (il a une méthode publique pour l'obtenir et l'installer), mais uniquement concentré sur la nécessité de "stocker" cet objet quelque part. Si vous utilisez un référentiel SQL standard, la première chose à faire est de créer une table, puis de définir les colonnes, de définir la longueur maximale de la colonne Nom, et enfin de sélectionner l'ORM à utiliser ou de créer une couche de données dédiée, et enfin, vous pouvez enregistrer l'objet.

Si vous travaillez avec un corbeau, c'est le seul code dont vous avez besoin

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

2 :store.Initialize();

3 :utilisation de (var session =store.OpenSession())

4 :{/code>

5 :var joueur =nouveau joueur

6 :{/code>

7 :Âge =30,

8 :Date d'enregistrement =DateHeure.Maintenant,

9 :Nom ="Alkampfer",

10 :} ;

11 : session.Store(lecteur) ;

12 :session.SaveChanges();

13 :}

Le serveur prend simplement l'objet et l'enregistre.

Afin d'enregistrer un objet dans l'entrepôt de données, seules deux fonctions sont nécessaires :"Enregistrer" pour indiquer au référentiel l'objet que vous souhaitez enregistrer, et "Enregistrer les modifications", qui effectue réellement l'enregistrement.

Qu'obtenez-vous avec ce simple fragment de code ? Allez simplement dans le navigateur standard à l'adresse du serveur et vous devriez voir le contenu de la base de données.

Contenu de la base de données après insertion d'un objet simple

Dans la figure, vous pouvez voir le contenu de la base de données corbeau, elle contient un joueur et un petit 1 à côté de l'objet est Id, que Raven utilise en interne pour identifier de manière unique cet objet. Un autre objet, appelé Sys Doc Hilo / Players, se charge de générer un identifiant pour l'objet Players avec l'algorithme Hilo.

C'est tout, il n'est pas nécessaire de définir le schéma, il n'est pas nécessaire d'avoir une propriété Id spéciale ou toute autre exigence pour rendre l'objet compatible avec le référentiel, appelez simplement la méthode Store pour n'importe quel objet .NET, et votre objet est dans la base de données, point !

Steven Lott | NoSQL ne signifie pas aucun schéma