2016-04-21 6 views
-1

Ich lerne das MEAN-Framework. Ich verstehe nicht, warum der Mongodb so beliebt ist, dass er im Framework erstellt wird und man die Datenbank nicht einfach ändern kann (oder kann ich?).MEAN - Datenbank in mongodb vs relationalen Datenbank

Meine Fragen sind.

  • Warum wird der mongodb im MEAN-Framework verwendet?
  • Warum gibt es keine Wahl zwischen noSql und Sql-Datenbank?
  • Ist das MEAN-Framework (das mongodb verwendet) nur für einige Arten von Webprojekten oder für jede Art von Webprojekten geeignet?
  • Wie kann ich diese Beispieldatenbank im mongodb erstellen?

Wenn ich zum Beispiel haben diese relationale Datenbank:

User 
    id 
    name 

Car 
    id 
    user_id 
    car_make_id  
    name 

CarMake 
    id 
    Name 

als es möglich ist, einfache Abfragen zu machen:

  1. Zeigen Sie mir Benutzer und seine Autos. Eine Abfrage mit Join.
  2. Zeigen Sie mir alle Autos in meinen Systemen, Besitzer und ihre Typen. Eine Abfrage mit Join.

Wenn ich diese Datenbank in mongodb erstellen:

  • verlor ich die Fähigkeit der realen Datenbanktransaktionen.
  • Wie sollte die beste Implementierung dieser Datenbank in mongodb sein? Ich kann die gleiche Datenbankstruktur verwenden, aber es wird langsamer sein, weil ich mehr Anfragen in die Datenbank machen muss, wenn ich die obigen Abfragen erstellen werde. Oder die Abfragen mit dem $ Lookup werden langsamer sein als echte Joins in der SQL-Datenbank - habe ich recht?

Ich kann die Datenbankstruktur wie diese

ändern
User 
    id: 
    name: 
    cars: [] 

Car 
    id: 
    car_make_id: 
    name: 

CarMake 
    id: 
    Name: 

Oder ich kann die Datenbankstruktur wie folgt ändern. Die Liste der Autos ist in den Benutzer eingebettet.

User 
    id: 
    name: 
    cars: 
    [ 
    { 
     id: 
     car_make_id: 
     name: 
    } 
    ] 

CarMake 
    id: 
    Name: 

Aber wie bekomme ich: Zeig mir alle Autos in meinen Systemen, Besitzer und deren Typen. Könntest du mir bitte helfen, die Welt auf dem Mongodb-Weg zu sehen?

Antwort

0

Der MEAN-Stapel wird hauptsächlich verwendet, um einseitige Anwendungen zu erstellen. Und konzentrieren Sie sich stark auf die Seiten (ich meine die Architektur der Anwendung.)

1). Best Practice des MongoDb ist das Erstellen von Sammlungen für die Seite. Das bedeutet, wenn eine Seite mehrere Arten von Daten verwendet. es ist besser, wenn Sie die Dokumente in der Sammlung embed können (mehrere Arten von Daten in einer Sammlung. Aber in einigen Fällen müssen wir references stattdessen machen).

2). Mongodb verwendet JSON für Transaktionen und es ist einfach in Javascript Frameworks zu verwenden.

3). Mongodb verwendet Caching (es verwendet RAM um aktuelle Daten im Speicher zu halten) wie Javascript. So ist es leicht, Abfragen schnell zu erledigen (seit weniger IO mit Festplatten.).

Für Ihr Beispiel können Sie

User:{id: 
     name: 
     cars: 
     [ 
     { 
      id: 
      car_make_id: 
      name: 
     } 
     ]}  


CarMake:{ 
     id: 
     Name:} 

verwenden Da Sie Index-ID der ersten Kollektion unter Verwendung kann. Da Sie alle Daten auf einmal abrufen können. (Wenn Sie die Sammlung einbetten, befinden sich alle Daten im Dokument in den nahen Blöcken auf der Festplatte. So ist das Datenretracing schnell)

+0

In dieser Datenbankstruktur. Wie kann ich mit allen Autos in meinem System sehen? Ich muss alle Benutzer abrufen und alle eingebetteten Autos lesen? –

+0

Nein. Sie können einen eindeutigen Befehl mit "Cars.name" verwenden. Oder Sie können das Aggregationsframework dazu verwenden. Aber wenn Sie die Datenbank entwerfen. Entwerfen Sie zuerst die Anwendung und die Datenbank. (Reverse-Sache, wenn wir relationale Datenbanken verwenden.) –

+0

Bitte denken Sie daran, die Antwort zu akzeptieren, wenn Sie Hilfe haben. Es wird hilfreich andere mit der gleichen Art von Problem. –

Verwandte Themen