Die meisten effiziente Datenbank-design für einen blog (posts und Kommentare)
Was wäre die beste Art und Weise der Gestaltung einer Datenbank zum speichern von blog-posts und Kommentare? Ich bin derzeit denken eine Tabelle für die posts und eine für Kommentare, die jeweils mit einem post-ID.
Scheint es mir jedoch, die Schleppnetzfischerei durch eine große Tabelle der Kommentare zu finden, die für den entsprechenden Beitrag wäre teuer und würde getan werden, jedes mal, wenn ein blog-post geladen wird (vielleicht mit einem Betrag von caching).
Gibt es eine bessere Möglichkeit?
mögliche Duplikate von MYSQl-Tabelle Optimieren Von Blog-Posts, Mit Kommentaren
"der beste Weg"? Kleinste? Die meisten verwenden von Oracle-Funktionen? Was bedeutet "beste" in diesem Kontext bedeuten?
Lott: ich Stimme für die "beste Nutzung von Oracle-Funktionen". Je mehr Funktionen, desto besser! 😛
Ein bisschen offtopic, aber interessant: wenn Sie nicht wollen, um durch zu gehen das hasse zu machen, ein maßgeschneidertes system, das Sie nutzen könnten Sie einen vorgefertigten wie disqus.com für Kommentare
"der beste Weg"? Kleinste? Die meisten verwenden von Oracle-Funktionen? Was bedeutet "beste" in diesem Kontext bedeuten?
Lott: ich Stimme für die "beste Nutzung von Oracle-Funktionen". Je mehr Funktionen, desto besser! 😛
Ein bisschen offtopic, aber interessant: wenn Sie nicht wollen, um durch zu gehen das hasse zu machen, ein maßgeschneidertes system, das Sie nutzen könnten Sie einen vorgefertigten wie disqus.com für Kommentare
InformationsquelleAutor tsvallender | 2010-08-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alle Datenbank-Anbieter mit Ihnen zu vereinbaren.
Bieten Sie "Indizes" zu begrenzen.
InformationsquelleAutor S.Lott
Jedes Datenbank-system Sie verwenden, um Ihre blog verwenden Indizierung. Was dies bedeutet ist, dass, anstatt die "Schleppnetzfischerei durch einen großen Tisch," Ihr Datenbank-system verwaltet eine separate Liste der Kommentare und die Beiträge, die Sie zugeordnet sind, ähnlich wie der index am Ende eines Buchs. Dies ermöglicht es dem Datenbank-system zu laden, die Kommentare im Zusammenhang mit einer post-extrem schnell, und ich sehe keine Probleme mit den vorgeschlagenen Entwurf für einen blog, der jeder Größe.
Indizes werden Häufig verwendet, um ordnen-Tabellen mit Millionen von Zeilen mit anderen Tabellen mit Millionen von Zeilen - Sie haben einen außergewöhnlich großen blog zu verlangen Denormalisierung der Kommentare, und sogar noch, caching würde wahrscheinlich dienen Sie weit besser als denormalizing der Datenbank.
Müssen Sie die Definition eines Indexes auf Ihre Kommentare-Tabelle, und verknüpfen Sie es mit was auch immer-Spalte enthält die Post-ID. Wie ' s gemacht wird, ist davon abhängig, welche Datenbank-system, das Sie verwenden.
InformationsquelleAutor Ryan Brunner
probieren Sie etwas wie dieses:
InformationsquelleAutor KM.
Einen index ist immer da, um dich zu retten! Der erste index auf
postId
und anderencommentdate
(desc)InformationsquelleAutor ankitjaininfo
Okay, mal sehen.
Warum denkst du, es wäre teuer? Weil Sie möglicherweise glauben, dass eine lineare Suche durchgeführt werden wird, jedes mal, wenn unter O(n) Zeit. Für eine Milliarde Kommentare, eine Milliarde Iterationen durchgeführt werden.
Nun nehmen wir an, ein binary search tree ist konstruiert für comment_ID. Alle Kommentar, die Sie brauchen log(n) Zeit [Basis 2]. Also für noch 1 Milliarde Kommentare, nur rund 32 Iterationen werden benötigt.
Betrachten Sie nun eine leicht modifizierte BST, wobei jeder Knoten enthält die k Elemente anstelle von 1 (in einer Liste) und hat k+1 Kinder-Knoten. Die gleichen Eigenschaften von BST sind, folgte in dieser Daten Struktur. Was wir hier haben ist, spricht man von einer B-Baum. Mehr Lesen : GeeksForGeeks - B-Baum Einführung
Für einen B-Baum, die lookup-Zeit ist log(n) [Basis-k]. Daher, wenn k=10, für 1 Milliarde Einträge, nur 9 Iterationen benötigt werden.
Alle Datenbanken speichern von Indizes für Primärschlüssel in B-Bäumen. Also, die angegebene Aufgabe wäre nicht teuer sein, und Sie sollten gehen Sie voran und design der Datenbank, die Art und Weise es schien klar.
PS: Sie können erstellen Sie einen index für jede Spalte der Tabelle. Standardmäßig Primärschlüssel Indizes sind bereits gespeichert. Aber seien Sie vorsichtig, machen Sie nicht unnötig-Indizes, da Sie Speicherplatz verbrauchen.
InformationsquelleAutor kshubham07