2017-11-05 6 views
0

Ich versuche Google Cloud Datastore, aber ich habe einige Zweifel. Ich weiß, dass es ideal ist, eine relationale Datenbank zu verwenden, um einen Online-Shop zu erstellen, aber ich möchte Google Cloud Datastore verwenden.Google Cloud Datastore für Produkte und Lager

Wie würde eine Datenbank mit 2 Tabellen erstellt? Lager und Produkte. Die Bestandstabelle hat 2 Spalten (Ref und Einheiten) und die Produkttabelle hat 3 Spalten (Name, Ref und Preis).

Wie würden Sie tun, um alle Produkte, die Lager haben? ... wie ein Join, ich weiß, dass wir keine Joins haben, deshalb meine Zweifel.

Es muss einen effizienten Weg geben, um den Bestand zu den Produkten zu bekommen.

Antwort

1

Es gibt keine Tabellen im Datenspeicher, Sie haben nur Entitäten mit Eigenschaften. Abhängig von der verwendeten Client-Bibliothek haben Sie möglicherweise Entity-Modelle.

Die Stock Entities können eine Key-Eigenschaft haben, die auf die entsprechenden Entities verweist. Sie fragen nach den Stock Entitäten, aus den Ergebnissen erhalten Sie die Schlüssel, mit denen Sie die entsprechenden Entitäten ziehen.

Oder, wenn sie immer in einem 1 sind: Beziehung 1 I genau das gleiche Objekt-IDs für die entsprechenden Stock und Product Einheiten verwenden könnte, so kann ich eine Stock Abfrage und von den Stock Entitäten im Ergebnis machen (oder eher von ihren Schlüsseln/IDs, da würde ich wahrscheinlich keys_only Abfragen machen) Ich kann sofort die Schlüssel berechnen und die entsprechenden Entitäten erhalten (siehe re-using an entity's ID for other entities of different kinds - sane idea?).

Aber im Allgemeinen, Sie könnte wollen den allgemeinen SQL-Ansatz von Abfragen Daten zu überdenken, einen Bericht zu erstellen, wenn Sie es brauchen (und erwarten, dass schnell zu sein) und stattdessen die Gewohnheit zu machen, die notwendigen Berechnungen vor Durchführung der Zeit - wann immer sich die in diesen Berechnungen verwendeten Daten ändern. Dies ist ein viel besser skalierbarer Ansatz, der Hand in Hand mit dem Datenspeicher arbeitet (und ich vermute, mit Nosql im Allgemeinen). Und für die Sie keine SQL-ähnlichen Joins durchführen müssen. Setzen Sie die Bestandsflag-Markierung für ein Produktrecht, wenn Sie den Bestandswert dekrementieren, wenn Sie das betreffende Produkt bereits kennen, so dass Sie es später nicht mehr abfragen müssen. Dort wird es auch zum Bericht hinzugefügt (damit Sie es bei Bedarf bereit haben) und möglicherweise auch die Aufstockungsaktivität auslösen.

Verwandte Themen