2008-10-02 15 views
9

Ich fange gerade an, zu erforschen, ob Amazons SimpleDB-Dienst als Datenspeicher für RoR-Anwendungen genutzt werden kann. Wir werden EC2 für den Webserver verwenden und haben geplant, EC2 auch für die MySQL-Server zu verwenden. Aber jetzt ist die Frage, warum nicht SimpleDB verwenden?Was müssen Sie bei der Entscheidung zwischen MySQL und Amazon SimpleDB für eine RoR-App beachten?

Die Anwendung wird (wenn sie erfolgreich ist) in Bezug auf Anzahl der unterstützten Benutzer sehr skalierbar sein, muss eine einfache und effiziente Codebasis verwalten und muss zuverlässig sein.

Ich bin neugierig, was die SO-Communities Gedanken dazu sind.

+0

Ich habe gerade Ihre Frage (etwas) hier angesprochen: http://StackOverflow.com/Questions/53693 – rjurney

Antwort

4

Die Bibliothek Rubin SimpleDB ist nicht so vollständig wie ActiveRecord (der Standard-Rails-DB-Adapter), so dass viele der Funktionen, die Sie gewohnt sind, nicht vorhanden sind.

Auf der positiven Seite ist es schemal, skalierbar und funktioniert gut mit ec2.

Wenn Sie Dinge wie Volltextsuche in Ihrer App tun, dann ist SimpleDB möglicherweise nicht die beste Wahl, bleiben Sie mit AR + sphinx.

4

Nun, wenn man bedenkt, dass einfache DB keine SQL verwendet oder sogar Tabellen hat, bedeutet das, dass es ein völlig anderes Biest ist als MySQL und andere SQL-basierte Dinge (http://aws.amazon.com/simpledb/). Es gibt keine Einschränkungen, Trigger oder Joins. Viel Glück.

Hier ist ein Weg, um es zu bekommen und läuft: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1242 (via http://rubyforge.org/projects/aws-sdb/)

Ich nehme an, wenn Sie nie die Daten außerhalb der Schienen abzufragen gehen zu müssen, dann kann SimpleDB beweisen in Ordnung sein . Da es sich jedoch nicht um eine erstklassige unterstützte Datenbank handelt, werden Sie wahrscheinlich auf Fehler stoßen, die schwer zu beheben sind. Ich möchte keine Produktionsschienen-App in einem Semi-Beta-Backend ausführen.

+0

Ich sehe nicht, wie dies den Wert zu dem Thema hinzufügt. –

+0

Ich möchte klarstellen, dass mein vorheriger Kommentar nach der ersten "schnellsten Pistole im Westen" Post kam, wo Sie den ersten Absatz gepostet haben. –

+0

Es ist ziemlich zuverlässig und es ist einfach, Daten daraus in eine SQL-Datenbank zur Analyse zu ziehen. – rjurney

1

Ich selbst bin sehr an diesem Thema interessiert. Im Moment bin ich auf einem Cloud-Computing-High, also würde ich sagen, gehen Sie mit SimpleDB, da es wahrscheinlich besser skalieren wird in dem Sinne, dass Sie eine hohe Verfügbarkeit haben werden, aber das sind nur meine Gedanken im Moment. Noch nicht aus Erfahrung.

Edit: Es stimmt, dass SimpleDB keine normalen Funktionen eine „normale“ Datenbank hat, aber es sollte es tun, wenn Sie nur eine einfache CRUD Schicht müssen gegen arbeiten, was

meinem Fall ist
+0

wie ich bin. Nicht, dass ich versuche, diese App mit 100% AWS-Dienste zu bauen, aber SimpleDB und SQS sind die einzigen beiden nicht gewöhnungsbedürftig. Nach dem, was ich gelesen habe, wenn Sie die Route der Verwendung von SimpleDB gehen, ist die Verwendung von SQS ein Kinderspiel. –

0

Es gibt eine Bibliothek namens SimpleRecord, die ein Ersatz für ActiveRecord ist, aber SimpleDB als Back-End-Datenspeicher verwendet.

2

Für mich fühlt sich das einfach an, "Hey, da sind diese hübschen Werkzeuge da draußen, ich sollte ein Projekt mit ihnen bauen", anstatt diese spezifischen Werkzeuge wirklich zu benutzen. Vielleicht bin ich nur mürrisch, aber es fühlt sich an wie ein klassischer Fall von vorzeitiger Optimierung. Sie versuchen, einen externen Service zu nutzen, der Geld für eine App kostet, die noch nicht einmal geschrieben wurde, und Sie sagen nicht, dass Sie eine garantierte Zielgruppe haben oder eine, die notwendigerweise auf ein Niveau skaliert, das dies rechtfertigt.

"Die Anwendung wird (wenn erfolgreich) sehr skalierbar sein in Bezug auf die Anzahl der unterstützten Benutzer", ernsthaft, das beschreibt die Hälfte des Internets. Es ist der "wenn Erfolg" Teil, der wirklich die Frage ist. Konzentrieren Sie sich einfach darauf, die Anwendung schnell und einfach zu erstellen. Am einfachsten ist es, ROR zu verwenden, da es sozusagen out of the box ist. Kombinieren Sie es mit einer Datenbank, verwenden Sie ActiveRecord und erstellen Sie etwas, das Nutzer anzieht.

In der Tat werde ich weiter gehen und sagen, dass EC2 ist ziemlich teuer für immer auf Servern. Stellen Sie es auf einem Slidehost oder einer anderen gehosteten Lösung bereit und verschieben Sie es dann in EC2, wenn Sie die Nachfrage unterstützen müssen.

+0

tolles Feedback, und wie Sie beschrieben haben, gab es hier eine gewisse Menge "vorzeitige Optimierung". Zu diesem Zeitpunkt wird die Anwendung auf meinem dedizierten Server gehostet, den ich seit Jahren habe, und verwendet mySQL. Wenn es notwendig wird, wird es zu den AWS-Diensten verschoben. –