Was sind Namenskonventionen für MongoDB?

185

Gibt es eine Reihe bevorzugter Namenskonventionen für MongoDB-Berechtigungen wie Datenbanken, Sammlungen und Feldnamen?

Ich dachte in diese Richtung:

  • Datenbanken: bestehen aus dem Zweck (Wort im Singular) und enden mit „db“ - alles in Kleinbuchstaben: imagedb, resumedb, memberdb usw.
  • Sammlungen: Plural in Kleinbuchstaben: Bilder, Lebensläufe,
  • Dokumentfelder: lowerCamelCase, z. B. memberFirstName, fileName usw.
Andrey
quelle

Antworten:

125
  1. Kurz gesagt: Optimierung der Lagerung kleiner Objekte , SERVER-863 . Dumm aber wahr.

  2. Ich denke, hier sollten so ziemlich die gleichen Regeln gelten, die für Beziehungsdatenbanken gelten. Und nach so vielen Jahrzehnten gibt es immer noch keine Einigung darüber, ob RDBMS-Tabellen als Singular oder Plural bezeichnet werden sollen ...

  3. MongoDB spricht JavaScript. Verwenden Sie daher die JS-Namenskonventionen von camelCase.

  4. In der offiziellen Dokumentation von MongoDB wird erwähnt, dass Sie möglicherweise Unterstriche verwenden. Außerdem wird eine integrierte Kennung benannt _id(dies kann jedoch darauf hinweisen, dass _iddiese privat, intern, niemals angezeigt oder bearbeitet werden soll.

Tomasz Nurkiewicz
quelle
95
3 und 4 sind widersprüchlich - JS bevorzugt Kamelkoffer, Mongo scheint Unterstriche zu bevorzugen ... aber wenn Sie Zweifel haben, wählen Sie Unterstriche. Leute, die an nicht-lateinische Alphabete gewöhnt sind, werden es Ihnen danken.
Matt Zukowski
1
Siehe diese Frage für die Single vs Plural Debatte: stackoverflow.com/questions/338156/…
Jason
4
Ich bin mir nicht sicher, ob ich sagen würde "JS bevorzugt Kamelkoffer". JS selbst hat keine Präferenz, aber es ist vielleicht richtig zu sagen, dass die meisten JS-Programmierer dazu neigen, Kamelkoffer zu verwenden.
Baumgesicht
1
@treeface Ich denke, Matt bezog sich auf die Tatsache, dass die integrierten Methoden von JS alle camelCase verwenden, sowohl im Knoten als auch in Browsern
Luke Taylor
1
Dem integrierten Bezeichner _idwird höchstwahrscheinlich ein Unterstrich vorangestellt, um einer allgemeinen JavaScript-Konvention zu folgen, die angibt, dass der Schlüssel ein interner / privater Schlüssel sein soll. Mit anderen Worten, das _idsoll niemals bearbeitet oder jemandem präsentiert werden, der die Daten einer Sammlung betrachtet.
Beau Smith
55

DATENBANK

  • camelCase
  • DB am Ende des Namens anhängen
  • Singular machen (Sammlungen sind Plural)

MongoDB gibt ein schönes Beispiel:

Um eine zu verwendende Datenbank auszuwählen, geben Sie in der Mongo-Shell die Anweisung use <db> wie im folgenden Beispiel aus:

benutze myDB
benutze myNewDB

Inhalt von: https://docs.mongodb.com/manual/core/databases-and-collections/#databases

SAMMLUNGEN

  • Kleinbuchstaben: Vermeidet Probleme mit der Groß- und Kleinschreibung. Bei MongoDB-Sammlungsnamen wird zwischen Groß- und Kleinschreibung unterschieden.

  • Plural: Es ist offensichtlicher, eine Sammlung von etwas als Plural zu bezeichnen, z. B. "Dateien" anstelle von "Datei".

  • > Keine Worttrennzeichen: Vermeidet Probleme, bei denen verschiedene Personen (falsch) Wörter trennen (Benutzername <-> Benutzername, Vorname <->
    Vorname). Dieser ist zur Debatte nach ein paar Leute
    hier in der Gegend , aber das Argument ist vorgesehen, um Sammlungsnamen isoliert Ich glaube nicht , es sein sollte;) Wenn Sie sich die Verbesserung der
    Lesbarkeit Ihrer Kollektionsnamen von Unterstrichen Hinzufügen oder
    camelcase Ihre Sammlung Der Name ist wahrscheinlich zu lang oder sollte
    gegebenenfalls Punkte verwenden, was der Standard für die
    Kategorisierung von Sammlungen ist .

  • Punktnotation für Sammlungen mit höheren Details: Gibt einen Hinweis darauf, wie Sammlungen zusammenhängen. Sie können beispielsweise ziemlich sicher sein, dass Sie "users.pagevisits" löschen können, wenn Sie "users" löschen, vorausgesetzt, die Personen, die das Schema entworfen haben, haben gute Arbeit geleistet.

Inhalt von: http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html

Für Sammlungen folge ich diesen vorgeschlagenen Mustern, bis ich die offizielle MongoDB-Dokumentation finde.

BBi7
quelle
25

Auch wenn hierzu keine Konvention angegeben ist, werden manuelle Verweise für Eins-zu-Eins-Beziehungen konsistent nach der referenzierten Sammlung in der Mongo-Dokumentation benannt. Der Name folgt immer der Struktur <document>_id.

In einer dogsSammlung enthält ein Dokument beispielsweise manuelle Verweise auf externe Dokumente mit dem folgenden Namen:

{
  name: 'fido',
  owner_id: '5358e4249611f4a65e3068ab',
  race_id: '5358ee549611f4a65e3068ac',
  colour: 'yellow'
  ...
}

Dies folgt der Mongo-Konvention, _iddie Kennung für jedes Dokument zu benennen .

Danza
quelle
1
Ich habe camelCase in meiner Antwort nicht erwähnt, also würde ichowner_id
danza
7

Namenskonvention für die Sammlung

Um eine Sammlung zu benennen, sind einige Vorsichtsmaßnahmen zu treffen:

  1. Eine Sammlung mit leerer Zeichenfolge ("") ist kein gültiger Sammlungsname.
  2. Ein Sammlungsname sollte kein Nullzeichen enthalten, da dies das Ende des Sammlungsnamens definiert.
  3. Der Name der Sammlung sollte nicht mit dem Präfix "System" beginnen. da dies für interne Sammlungen reserviert ist.
  4. Es wäre gut, das Zeichen "$" nicht im Sammlungsnamen zu enthalten, da verschiedene für die Datenbank verfügbare Treiber "$" im Sammlungsnamen nicht unterstützen.

    Beachten Sie beim Erstellen eines Datenbanknamens Folgendes:

  5. Eine Datenbank mit einer leeren Zeichenfolge ("") ist kein gültiger Datenbankname.
  6. Der Datenbankname darf nicht länger als 64 Byte sein.
  7. Bei Datenbanknamen wird zwischen Groß- und Kleinschreibung unterschieden, auch bei Dateisystemen ohne Berücksichtigung der Groß- und Kleinschreibung. Daher ist es gut, den Namen in Kleinbuchstaben zu halten.
  8. Ein Datenbankname darf keines dieser Zeichen "/, \,.,", *, <,>,:, |,?, $, "Enthalten. Es darf auch kein einzelnes Leerzeichen oder Nullzeichen enthalten.

Für mehr Informationen. Bitte überprüfen Sie den folgenden Link: http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html

Shrinivas Kalangutkar
quelle
3

Ich denke, es ist alles persönliche Präferenz. Meine Einstellungen stammen aus der Verwendung von NHibernate in .NET mit SQL Server, sodass sie sich wahrscheinlich von denen anderer unterscheiden.

  • Datenbanken: Die Anwendung, die verwendet wird. Beispiel: Stackoverflow
  • Sammlungen: Singular im Namen, was es eine Sammlung von sein wird, zB: Frage
  • Dokumentfelder, z. B. MemberFirstName

Ehrlich gesagt ist es nicht so wichtig, solange es für das Projekt konsistent ist. Machen Sie sich einfach an die Arbeit und schwitzen Sie nicht an den Details: P.

Rex Morgan
quelle
1
Ich denke, das, was Konsequenzen haben könnte, sind die Dokumentfelder, da sie in jedem Dokument gespeichert werden. Wie Tomasz betonte, sollte es Platz / Bandbreite sparen, wenn man sie kurz hält. Ich denke, es ist viel wichtiger, dass Sie etwas verwenden, das es leicht verständlich macht.
Rex Morgan
2

Bis wir SERVER-863 bekommen , ist es ratsam, die Feldnamen so kurz wie möglich zu halten, insbesondere wenn Sie viele Aufzeichnungen haben.

Abhängig von Ihrem Anwendungsfall können Feldnamen einen großen Einfluss auf die Speicherung haben. Ich kann nicht verstehen, warum dies für MongoDb keine höhere Priorität hat, da sich dies positiv auf alle Benutzer auswirkt. Wenn nichts anderes, können wir anfangen, mit unseren Feldnamen aussagekräftiger umzugehen, ohne zweimal über Bandbreite und Speicherkosten nachdenken zu müssen.

Bitte stimmen Sie ab .

FlappySocks
quelle
Um potenzielle zukünftige Leser dieser Antwort zu aktualisieren, führt MongoDB heutzutage eine Komprimierung durch, sodass lange Feldnamen kein Problem mehr darstellen.
Hubro