International Php Conference und Webtec Conference 2012 – Tag 2

So, der zweite Tag hat begonnen. Ich bin gespannt, ob es so gut weiter geht wie gestern.

Store your Country in your Database
In Open Streetmap lassen sich jegliche Elemente (Punkte, Polygone,…) mit freien Tags versehen.
Die Schnittstelle gibt XML zurück. Auf geofabrik.de kann man Auszüge für Länder und kleinere Einheiten downloaden.
Wenn die Kategorien als Unterobjekt (Keyboard – Value) im JSON des Shapes abgespeichert werden, lassen sich diese komfortabel mit $exists abfragen.
EnsureIndex erzeugt einen Index in mongoDB falls noch keiner existiert.
Um zu Verhindern, dass die Maximalanzahl von Indizes benutzt werden muss, bietet sich das speichern als uniformes Key – Value Unterobjekt und ein zusammengesetzter Index an. Alternativ lassen sich Key und Value auch zusammengesetzt als Array of String speichern und z. B. per Regex abfragen.
Die Importe aus XML sind meist sehr Speicher intensiv.
MongoDB kann Koordinaten in einem Array in einen 2d Index packen, auf den dann Abfragen gemacht werden können.
Bei Abfragen mit dem near Operator wird zu jedem Punkt noch der Abstand zu den Abfragekoordinaten zurück gegeben.
Der Index funktioniert über einen Hash, der die Welt in Quadrate zerteilt.
Die Reihenfolge von longitude und latitude ist festgelegt und wird von MongoDB immer so angenommen.

Jetzt wird es schnell: Von relationalen DBs zu MongoDB
Hauptproblem sind die komplexen Daten und die damit verbundenen Joins. Darüber hinaus die Downtimes bei Backup und Skalierung.
Der Hauptunterschied zwischen MongoDB und CouchDB ist die Möglichkeit der Adhoc Queries bei MongoDB.
MongoDB unterstützen an sich keine Transaktionen. Diese lassen sich aber per Pattern nachbauen, zumindest eine einfache.
MVCC lässt sich nach dem Vorbild von Git mit mongoDB nachbauen, indem man quasi Commits abspeichert, die auf die eigentlichen Dokumente zeigen. mongoMVCC ist auf GitHub verfügbar.

Kata Keynote
LProgrammierung lässt sich üben.
Es sollte eine kleine Aufgabe sein, die sich innerhalb von maximal einer halben Stunde lösen lässt.
Diese soll mehrfach gelöst werden. Immer auf unterschiedliche Art und Weise.
Meist geht es um einfache Algorithmen und die Umgebung ist sauber.
Man kann z. B. auch das programmieren ohne Maus üben oder nur super kurze Methoden oder ein bestimmtes Pattern.
Dabei sollte Test Driven vorgegangen werden, was aber auch im Rahmen einer solchen Kata geübt werden kann.
Ein schönes Beispiel ist ein Konverter von römischen nach arabischen Zahlen.
Als ein Tages Training heißt dass Coderetreat.

http://end.of.the.road
Momentan ist http 1.1 im Einsatz.
Caching ist bereits im Protokoll eingebaut. Caching wird trotzdem in nahezu jeder Applikation selbst eingebaut.
Mit dem cache-control Header und stale-if-error lassen sich mithilfe von z. B. Varnish Fehler tolerante Systeme bauen.
Etag, läßt modified Date Berechnung ist meistens deutlich günstiger als eine volle Repsonse auszuliefern.
So muss nur eine 304 zurück gegeben werden.
Spdy = http on steroids
Unterstützung für Multiplexing und Header Kompression.
Http existiert seit 20 Jahren nahezu ohne Anpassungen.
Das Wissen über http ist bei Webentwickler sehr dünn, dabei liefert es sehr viele Features mit.

XtraDB Cluster: Die neue MySQL HA Lösung
Replikation ist meistens asynchron.
Der typische XtraDB Cluster besteht aus 3 Servern.
Ist ein Multi-Master System.
Weitere Nodes lassen sich sehr einfach hinzufügen. Ein bestehender Node liefert dem neuen die Daten bis dieser up to date ist.
Dabei wird ein kompletter Snapshot transferiert.
Alternativ lässt sich das auch inkrementell machen.
Mindestens 3 Nodes wegen Split Brain Problematik.
Der schwächste Rechner bestimmt die Schreibperformance.
Einschränkungen sind fehlender MyIsam Support und optimstic locking.
Kein Zuwachs bei der Schreibperformance durch mehr Nodes, da alle Daten auf allen Nodes existieren.
Die 3 Nodes auf 2 RZs verteilen.
Constraints funktionieren noch nicht, da die Software noch sehr jung ist.

NoSQL Panel
OrientDB ist eine Mischung aus unterschiedlichen NoSQL Ansätzen

Fazit
Nach dem wirklich guten ersten Tag, war der zweite leider nicht ganz so gut. Schon die Auswahl der Tracks fiel mir schwerer. Nächstes Mal bitte besser verteilen. Nichts desto trotz freue ich mich auf morgen und hoffe, dass der dritte Tag so gut wie der erste ist.

GD Star Rating
loading...

Kommentar verfassen