2010-12-23 8 views
0

Ich frage mich nur, ob jemand, der Erfahrung mit Azure Table Storage hat, kommentieren könnte, wenn es eine gute Idee ist, 1 Tabelle zu verwenden, um mehrere Typen zu speichern?Frage zum Azure-Tabellenspeicherdesign: Ist es eine gute Idee, eine Tabelle zum Speichern mehrerer Typen zu verwenden?

Der Grund, warum ich dies tun möchte, ist, damit ich Transaktionen machen kann. Ich möchte aber auch einen Sinn für Entwicklung bekommen, wäre dieser Ansatz einfach oder unordentlich zu handhaben? Bisher verwende ich den Azure Storage Explorer, um die Entwicklung zu unterstützen und mehrere Typen in einer Tabelle anzuzeigen.

Um ein Beispiel zu geben, sage ich, eine Community-Website von Blogs zu entwerfen, wenn ich alle Blog-Beiträge, Kategorien, Kommentare in einer Tabelle speichern, welche Probleme würde ich begegnen? Auf der anderen Seite, wenn ich das nicht tue, wie stelle ich zum Beispiel eine gewisse Konsistenz bei Kategorie und Post sicher (angenommen, 1 Post kann eine 1 Kategorie haben)?

Oder gibt es noch andere Ansätze, die Menschen verwenden, um dieses Problem mit Tabellenspeicher zu umgehen?

Vielen Dank.

Antwort

2

Wenn Ihr Ziel ist, perfekte Konsistenz zu haben, dann ist die Verwendung einer einzigen Tabelle ein guter Weg, um darüber zu gehen. Ich denke jedoch, dass Sie wahrscheinlich die Dinge für sich selbst erschweren werden und sehr wenig Belohnung bekommen werden. Der Grund, warum ich das sage, ist, dass Tabellenspeicher extrem zuverlässig ist. Transaktionen sind großartig und alle, wenn Sie mit sehr sehr wichtigen Daten zu tun haben, aber in den meisten Fällen, wie zum Beispiel einem Blog, wäre es besser, 1) entweder einen sehr kleinen Prozentsatz inkonsistenter Daten zuzulassen und 2) Fehler zu behandeln auf eine manuelle Weise.

Das größte Problem beim Speichern mehrerer Typen in derselben Tabelle ist die Serialisierung. Die meisten aktuellen Tabellenspeicher-SDKs und -Dienstprogramme wurden für die Verarbeitung eines einzelnen Typs entwickelt. Davon abgesehen können Sie sicherlich mehrere Schemas entweder manuell behandeln (d. H. Das Deserialisieren Ihres Objekts an ein Masterobjekt, das alle möglichen Eigenschaften enthält) oder direkt mit den REST-Services interagieren (d. H. Das Azure SDK nicht durchlaufen). Wenn Sie die REST-Services direkt verwenden, müssen Sie die Serialisierung selbst durchführen, sodass Sie die verschiedenen Typen effizienter handhaben können. Der Nachteil ist jedoch, dass Sie alles manuell erledigen, was normalerweise vom Azure SDK gehandhabt wird.

Es gibt wirklich keinen richtigen oder falschen Weg, dies zu tun. Beide Situationen werden funktionieren, es ist nur eine Frage dessen, was am praktischsten ist. Ich persönlich tendiere dazu, ein einzelnes Schema pro Tabelle zu erstellen, es sei denn, es gibt einen guten Grund, etwas anderes zu tun. Ich denke, dass Sie Tabellenspeicher finden werden, um ohne die Verwendung von Transaktionen zuverlässig genug zu sein.

Sie können die Windows Azure Toolkit überprüfen. Wir haben dieses Toolkit entwickelt, um einige der häufiger auftretenden azurblauen Aufgaben zu vereinfachen.

+0

Vielen Dank Nathan für Ihren Einblick! Es ist großartig zu wissen, dass Table Storage so zuverlässig ist. Aufgrund dieser Tatsache werde ich meine App entsprechend gestalten. Ich habe mir das Whitepaper zu Azure Table Storage angesehen, in Abschnitt 7.2 wurde eine Technik für die Kreuztabellenkonsistenz erläutert, deren Implementierung sehr komplex ist. Ich habe deine als Antwort markiert. Vielen Dank! –

Verwandte Themen