2016-08-26 2 views
0

wir versuchen, unsere Datenbank von MySQL zu verschieben. Wir versuchen zu verstehen, wie Redis funktioniert und wir würden gerne die beste Lösung für dieses Beispiel kennenlernen.Von relationalen Datenbank zu Redis, N zu N Beziehung

enter image description here

Wie Product-> Kategorien Beziehung zu lösen?

Wir werden brauchen - Liste aller von ID sortiert Produkte

  • Liste aller nach Namen sortiert Produkte (ASC/DESC)

  • Liste aller Produkte in der Kategorie 1

  • Liste aller Produkte in Kategorie 1 sortiert nach Name/ID/(ASC/DESC)

Vom zweiten Teil des Bildes werden wir durch Attribute gefiltert werden müssen

  • Liste aller Produkte mit Attribut 1 (Attribut Wert 1)

  • Liste aller Produkte mit Attribut 1 (Attribut Wert 1) in Kategorie 1 sortiert nach Name

Ist es gut, Redis für diese Art von Daten zu verwenden?

Dank

Antwort

0

Natürlich Sie Redis für diese Art von Daten nutzen könnten. Aber es wäre anders als eine relationale Datenbank zu verwenden!

Die Antwort wäre Sätze in diesem Beitrag, wie besprochen zu verwenden: how to have relations many to many in redis

Aber bevor Sie tatsächlich zu Redis bewegen, beachten Sie bitte, welches Problem Sie zu lösen versuchen. MySQL ist heutzutage ziemlich anständig als Datenbank und es hat eine "schemalose/NoSQL" ähnliche Funktionalität mit JSON-Dokumenten. Es hört sich an, als würden Sie gerade herausfinden, was Sie mit Redis machen könnten. Während ich denke, Redis ist ein sehr nettes Produkt, und Sie sollten es wirklich ausprobieren, bitte auch in Betracht ziehen, weiterhin MySQL verwenden seine moderneren Funktionen nutzen.

+0

Wir arbeiten weltweit an einer mobilen Anwendung, die mit dem Magento-Shop verbunden wird. Die Magento-REST-API ist zu langsam und ihre Datenbank zu schwer, daher werden wir Middleware für schnellere Antworten auf die Anwendung erstellen. Wir müssen in Middleware Produkte, Kategorien, Attribute von Produkten speichern. Dann müssen wir Antworten für Filteranforderungen erstellen. Unsere Middleware wird wie ein Cache funktionieren. Es sollte so schnell wie möglich sein. – Rastislav

+0

Großartig! Redis ist verrückt schnell, aber MySQL kann auch sein. Vielleicht sind die Magento-Abfragen einfach nicht so gut. Siehe http://blog.ulf-wendel.de/2013/using-phps-memcache-interface-to-query-mysql-5-7/ - und ich stimme zu Redis eignet sich sehr gut für einen Cache. Wenn Sie Caching durchführen, sollten Sie in Betracht ziehen, die denormalisierte Version zwischenzuspeichern - das gesamte Produkt mit allen seinen Kategorien und die komplette Kategorie mit allen Produkten zwischenzuspeichern und sie einfach zu ersetzen, wenn sie aktualisiert wird, anstatt sie neu zu erstellen die NM-Beziehung. – MichielB

+0

Ja, es wäre toll, alle Listen direkt in Redis zu haben, aber es gibt viele Kombinationen, die mit Filtern verbunden sind. Kategorie ist wie ein Attribut, aber Produkt kann Größe, Farbe, Preis haben ... und Sie können mehrere Filter verwenden = viele Kombinationen ... – Rastislav

Verwandte Themen