2017-05-29 4 views
0

Ich bin sehr neu zu Cosmosdb (Documentdb), während durch die Dokumentation gehen Ich wiederhole immer wieder eine Sache, die Documentdb ist Schema frei, aber ich fühle mich wie Sammlung in Analog zu Schema und beide sind logische Sicht .Wie Sammlung unterscheidet sich von Schema

Wikipedia definiertes Schema als "Der Begriff" Schema "bezieht sich auf die Organisation von Daten als ein Entwurf der Konstruktion der Datenbank". Ich glaube, Sammlung ist auch gleich, es ist die Organisation von Dokumenten, gespeicherten Verfahren, Triggern und UDF.

Also meine Frage ist, wie Schema unterscheidet sich von der Sammlung?

+1

Eine Sammlung erzwingt keine bestimmte Art von Dokument wie ein Schema.So kann eine Dokumentensammlung Dokumente mit Benutzerdaten oder ein Dokument mit Protokolldaten oder was auch immer haben. Eine Sammlung ist lediglich eine Sammlung von möglichen nicht verwandten Dokumenten. Eine Sammlung ist wie eine Datenbank, eine Datenbank kann mehrere (möglicherweise nicht verwandte) Tabellen enthalten. Aber eine Datenbank selbst beschreibt nicht, welche Daten gespeichert werden. –

+0

danke @PeterBons klingt logisch! – lambodar

Antwort

2

Das Schema der relationalen Datenbanken unterscheidet sich geringfügig vom Schema der Dokumentendatenbanken. Vereinfacht ausgedrückt ist eine relationale Datenbank strenger als die eines Dokumentenschemas. Mit anderen Worten, Datensätze in einer RDBMS-Tabelle müssen sich streng an das Schema halten, da wir beim Speichern eines Dokuments in einer Dokumentensammlung ein gewisses Maß an Flexibilität haben.

Konventionell ist eine Sammlung eine Gruppe von Dokumenten, die demselben Schema folgen. Dokument-DBs verhindern jedoch nicht das Speichern von Dokumenten mit unterschiedlichen Schemas in einer einzelnen Sammlung. Es ist die Flexibilität, die es den Benutzern gibt.

Nehmen wir ein Beispiel. Nehmen wir an, wir speichern einige Kundeninformationen. In relationalen DB, könnten wir eine gewisse Struktur wie

Customer ID INT 
Name  VARCHAR(50) 
Phone  VARCHAR(15) 
Email  VARCHAR(255) 

Je nach Kunde eine E-Mail oder Telefonnummer mit, werden sie als geeignete Werte oder Nullwerte aufgezeichnet werden.

ID, Name, Phone, Email 
1, John, 83453452, - 
2, Victor, -, - 
3, Smith, 34535345, [email protected] 

In den Dokumentendatenbanken müssen jedoch einige Spalten in der Auflistung angezeigt werden, wenn sie keine Werte enthalten.

[ 
{ 
    id: "123", 
    name: "John", 
    phone:"2572525", 
}, 
{ 
    id: "456", 
    name: "Stephen", 
}, 
{ 
    id: "789", 
    name: "King", 
    phone:"2572525", 
    email:"[email protected]" 
} 
] 

Allerdings ist es immer ratsam, auf ein Schema in dem Dokument db zu halten ist, auch wenn sie Flexibilität Schema lose Dokumente zu einer Sammelstelle für Wartbarkeit Zwecke zu speichern bieten.

+0

Danke für die Antwort @Ravi, ich schätze Ihre Bemühungen. Kommen zu Punkt, vergessen Beziehung db, ich habe in Cassandra und sein Schema basiert gearbeitet, und das, was Sie auf Null-Wert, es ist nur eine Wahl in Nosql und nichts mit Sammlung oder Schema zu tun ist, was mein Understading – lambodar

+0

Konventionell eine Sammlung ist eine Menge von Dokumenten, die demselben Schema folgen. Dokument-DBs verhindern jedoch nicht das Speichern von Dokumenten mit unterschiedlichen Schemas in einer einzelnen Sammlung. Es ist die Flexibilität, die es den Benutzern gibt. –

+1

Ich stimme nicht zu, dass eine Sammlung konventionell Dokumente mit dem gleichen Schema enthält. Es gibt keine solche Konvention. Vielleicht wurde Leuten beigebracht, dies zu tun (z. B. eine Sammlung pro Objekttyp), aber dafür gibt es weder eine Regel noch eine Konvention. –

2

Sammlungen haben wirklich nichts mit Schema zu tun. Sie sind nur ein organisatorisches Konstrukt für Dokumente. Mit Cosmos DB dienen sie als:

  • eine Transaktionsgrenze. Innerhalb einer Sammlung können Sie mehrere Abfragen/Aktualisierungen innerhalb einer Transaktion unter Verwendung gespeicherter Prozeduren ausführen. Diese Aktualisierungen sind auf eine einzelne Sammlung (genauer gesagt auf eine einzelne Partition innerhalb einer Sammlung) beschränkt.
  • eine Abrechnungs/Leistungsgrenze. Mit Cosmos DB können Sie die Anzahl der Anfrageeinheiten (RU)/Sekunde angeben, die einer Sammlung zugeordnet werden sollen. Jede Sammlung kann eine andere RU-Einstellung haben. Jede Sammlung hat minimale Kosten (aufgrund der Mindestmenge an EVU, die zugewiesen werden muss), unabhängig davon, wie viel Speicher Sie verbrauchen.
  • eine serverseitige Code-Grenze. Gespeicherte Prozeduren, Trigger usw. werden in eine bestimmte Sammlung hochgeladen.

Ob Sie eine einzelne Sammlung pro Objekttyp erstellen wählen oder speichern mehrere Objekttypen innerhalb einer einzigen Sammlung, ist ganz Ihnen überlassen. Und unabhängig von der Form Ihrer Daten.

Verwandte Themen