sql >> Database >  >> RDS >> Database

NoSQL:leven zonder schema

NoSql is geen vervanging voor SQL-databases, maar is een geldig alternatief voor veel situaties waarin standaard SQL niet de beste manier is om uw gegevens op te slaan.

Omdat we hebben geleerd dat wanneer je gegevens moet opslaan in een "datawarehouse" en die gegevens moet opvragen voor extractie, SQL de beste oplossing is, je hoeft alleen maar te beslissen welke SQL Engine je wilt gebruiken en het spel is voorbij.

In 2012 was deze suggestie fout, ik bedoel dat je er niet meer vanuit kunt gaan dat SQL de "enige manier" is om gegevens op te slaan, maar je moet weten dat er andere alternatieven zijn en die heten GEEN SQL. Onder deze term hebben we verschillende opslagmechanismen die niet op SQL zijn gebaseerd, en in .NET hebben we een uitzonderlijk product genaamd RavenDB (je kunt een heel goede introductie tot RavenDb vinden in de Mauro-blog).

Het eerste grote verschil met standaard SQL is de afwezigheid van een schema

Een van de meest vervelende beperkingen van SQL Server is de noodzaak om het exacte formaat te specificeren van de gegevens die u in uw opslag wilt opslaan. Dit is om veel goede redenen nodig, maar er zijn situaties waarin u er echt niet om geeft, vooral als uw software grotendeels gebaseerd is op het OOP-concept. Stel dat u dit object heeft

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: }

Er is even geen zorg dat dit object slecht is ingekapseld (het heeft een openbare methode om het te verkrijgen en te installeren), maar het is alleen gericht op de noodzaak om dit object ergens op te slaan. Als u een standaard SQL-repository gebruikt, moet u eerst een tabel maken, vervolgens de kolommen definiëren, de maximale lengte voor de kolom Naam definiëren en ten slotte de ORM selecteren om een ​​speciale gegevenslaag te gebruiken of te maken, en ten slotte kunt u het object opslaan.

Als je met een kraai werkt, is dit de enige code die je nodig hebt

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: }

De server neemt gewoon het object en slaat het op.

Om een ​​object op te slaan in het datawarehouse zijn slechts twee functies nodig:"Opslaan" om de repository te vertellen welk object u wilt opslaan, en "SaveChanges", die het opslaan daadwerkelijk uitvoert.

Wat krijg je met dit simpele codefragment? Ga gewoon naar de standaardbrowser op het serveradres en u zou de inhoud van de database moeten zien.

Database-inhoud na eenvoudige objectinvoeging

In Figure kun je de inhoud van de database crow zien, deze bevat een speler en een kleine 1 naast het object is Id, die Raven intern gebruikt om dit object uniek te identificeren. Een ander object, Sys Doc Hilo / Players genaamd, zorgt voor het genereren van een identifier voor het Players-object met het Hilo-algoritme.

Dit is alles, het is niet nodig om het schema te definiëren, het is niet nodig om een ​​speciale Id-eigenschap of enige andere vereiste te hebben om het object compatibel te maken met de repository, bel gewoon de Store-methode voor elk .NET-object en uw object staat in de database, Periode!

Steven Lott | NoSQL betekent niet Geen Schema


  1. Relatie tussen catalogus, schema, gebruiker en database-instantie

  2. Fix Error:"SELECT's links en rechts van UNION hebben niet hetzelfde aantal resultaatkolommen" in SQLite

  3. PHP - CSV-bestand importeren in mysql-database met behulp van LOAD DATA INFILE

  4. Hoge beschikbaarheid beheren in PostgreSQL – Deel III:Patroni