Frage

Ich arbeite an einer Social-Networking-Site mit einem Stammbaum, die GEDCOM-konform ist. Wir müssen entscheiden, ob wir eine horizontale oder vertikale Datenbankstruktur für Benutzerprofile verwenden sollten. Also, ich würde gerne wissen, ob jemand beantworten kann, wenn eine horizontale Datenbankstruktur verwenden und wenn die vertikale Datenbankstruktur zu verwenden.

finde ich ein paar Antworten für Shopping-Sites, wo Felder nicht entschieden werden: eine vertikale Datenbankstruktur verwendet werden soll. Aber ich bin verwirrt darüber, was für eine Stammbaum-Website zu verwenden. Soll ich vertikal oder horizontal?

War es hilfreich?

Lösung

Ich nehme an, Sie verwenden eine relationale Datenbank wie MySQL, MS SQL, SQLite, PostgreSQL oder Oracle für die Lagerung?

Gedcom ist ein Standard für den Informationsaustausch, so dass Sie wissen, wie viele Spalten, die Sie haben werden. Vielleicht ist der Standard mit neuen Eigenschaften in der Zukunft erweitert, aber es wahrscheinlich nicht viele neue Eigenschaften sein. Sie können ganz einfach einen Tisch mit ein paar neuen Spalten erweitern.

würde ich eine ‚horizontale‘ Tabelle verwenden und nicht ein Entity-attribyte-Wert-System (vertikale Tabelle). Vertikal Tischsysteme sind in der Regel langsam. Sie können nicht richtig indiziert werden und die Abfrage-Optimierer verwirren.

Es wird eine andere Geschichte, wenn Ihre Nutzer neue Eigenschaften in ihren Profilen wie Augen colo (u) r oder Lieblings colo (u) r selbst definieren können. Wie flexibel wollen Sie diese Profile sein?

Andere Tipps

Vertikal-Datenbanken sind für detawarehousing und Lese / Schreib nur berichten. Normalerweise über Nacht sie Sie neu generieren. Ihre Schreibleistung ist in der Regel sehr schlecht aber SELECTs sind 10-100 mal schneller.

Ein typisches Szenario einer vertikale Datenbank für die Verwendung ist olap Berichterstattung, wenn Sie eine (täglich) Snapshot von Daten erstellen und dann von Abfragen ausführen. Die meisten von Nutzen kommen aus den Abfragen, die nur eine relativ kleine Anzahl von Feldern anfordern, zum Beispiel wenn Sie wählen nur eine Handvoll von Feldern aus einem breiten und großen Tisch. Eine solche Abfrage-Abfrage für Millionen von Datensätzen (zum Beispiel die Berechnung SUM / COUNT / AVG) dauert nur ein oder zwei Sekunden.

Ihr Fall scheint nicht ein guter Kandidat für eine vertikale Datenbank zu sein.

ich mit tuinstoel einverstanden ist, vertikales Tabelle / EAV-System ist nicht nur langsam, sondern auch einige Zeit sehr komplex. Manchmal ist es erforderlich, einige Ihrer eigenen api Methoden zu schreiben, die mit diesen Tabellen und Entwickler beschäftigen nur mit diesen Methoden umgehen Komplexität zu vermeiden.

Wenn Sie also nicht mehr Felder hinzufügen müssen dann mit horizontalem Tisch bleiben. Allerdings können Sie auf verschiedene Tabelle benötigen, wenn Sie auch, wenn Sie mehrsprachige Fähigkeit unterstützen werden. Aber ich rate noch mit horizontalen Tabellen bleiben.

Ich entwickle auch eine Website Benutzerprofil beteiligt und ich horizontale Tabellen verwenden und wenn werde es verschiedene Sprachen in Zukunft erforderlich unterstützen, dann werde ich ändere nur für Bereiche, in denen die Sprache wichtig wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top