JAOO 2006: Patrick Linskey und Brian Oliver: Making Java Persistence Perform
Im Rahmen meines Performance Tracks sprachen dann Patrick Linskey (BEA) und Brian Oliver (Tangosol) über "Making Java Persistence Perform". Patrick war zuvor bei Solarmetric, die den Kodo JDO O/R Mapper gebaut haben, der jetzt in OpenJPA bei BEA aufgeht. Brian arbeitet bei Tangosol, die einen verteilten Cache für Cluster anbieten. Eigentlich ist Tangosol sogar mehr, da durch redudnate Speicherung die Daten auch recht sicher sind, d.h. wenn eine Node versagt, hat man immer noch die Daten im Zugriff.
Leider habe ich meine detailierten Aufzeichnungn verloren, aber einige Sachen sind mir im Gesächtsnis geblieben:
Zunächst ging Patrick auf den Unterschied zwischen Performance (=schnell) und Skalierbarkeit (=mehr Ressourcen führen zu mehr Durchsatz) ein. Dann stellt er da, dass Datenbanken einige grundlegende Eigenschaften haben: Sie skalieren nur begrenzt (weil sie kaum im Cluster laufen) und sie haben eine gewisse Latenz, weil sie eben auf einer anderen Maschine laufen und im Zweifel auch auf die Platte zugreifen müssen.
Daraus leiteten die beiden dann einige Regeln ab, wie zum Beispiel das Verlagern der Tätigkeiten in die Datenbank (die sehr effizient große Datenbestände durchsuchen kann) oder Dinge wie "Schreib einfach keine Daten". Während das auf den ersten Blick unsinnig scheint, ist es in wirklichkeit so, dass man mit einem Cache wie Tangosol dazu in der Lage ist, Daten sicher bereit zu stellen, ohne sie zu schreiben, weil sie im Cache redudant gespeichert werden. Andere Tipps betrafen zum Beispiel die Verwendung grobgranularer Transaktionen.
Meiner Ansicht nach war dieser Talk recht wichtig, denn gerade Persistenz ist oft ein Performance-Thema. Dazu kommt dann noch, dass man eigentlich für solche Probleme sowohl Datenbank-Know-How als auch Java-Know-How haben muss, so dass man das eigentlich kaum alleine bewältigen kann. Daher war einer der Tipps auch, it den Datenbank-Administratoren zu reden und sich ein gutes Verhältnis zu Ihnen aufzubauen.