{"id":452,"date":"2010-01-20T06:46:00","date_gmt":"2010-01-20T06:46:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=452"},"modified":"2010-01-20T06:46:00","modified_gmt":"2010-01-20T06:46:00","slug":"denormalisierung-fur-schnelle-keyvalue-speichersysteme","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2010\/01\/denormalisierung-fur-schnelle-keyvalue-speichersysteme\/","title":{"rendered":"Denormalisierung f\u00fcr schnelle Key\/Value Speichersysteme"},"content":{"rendered":"<p>RDBMS kommen im distributed Cloud-Computing selten vor. Daher muss man auch die Datenhaltung \u00fcberdenken. Ein Blog-Eintrag diskutiert die \u00c4nderungen sehr gut: <a title=\"http:\/\/highscalability.com\/how-i-learned-stop-worrying-and-love-using-lot-disk-space-scale\" href=\"http:\/\/highscalability.com\/how-i-learned-stop-worrying-and-love-using-lot-disk-space-scale\">http:\/\/highscalability.com\/how-i-learned-stop-worrying-and-love-using-lot-disk-space-scale<\/a>. Im Prinzip geht es darum, aus Joins zu verzichten, und Daten in den verschiedenen Entities zu duplizieren. Die Erfahrung habe ich bei meinen GWT und GAE\/J Projekt ebenfalls gemacht. Es f\u00fchrt zu weniger Lesezugriffen insgesamt, wenn man die Daten lokal in der Entity h\u00e4lt und nicht erst aus verschiedenen Entities zusammensucht, wie man bei normalisierten relationalen Modellen tut. (Au\u00dferdem ist es bei vielen lese-Zugriffen auch billiger, die Daten an einer Stelle zu haben, anstatt sie von verschiedenen Stellen \u00fcber Lesezugriffe, die jeweils Kosten nach sich ziehen, einzusammeln.)<\/p>\n<p>In meinen GWT-GAE\/J-Projekt habe ich noch einen anderen Ansatz, die Zugriffe auf die Big-Table zu minimieren. Grunds\u00e4tzlich: Alle GWT-RPC Implementierungen sind Fassaden, die auf Services zur\u00fcckgreifen (Googe Guice injiziert diese in die RPC-Fassaden). F\u00fcr diese Endpoints gibt es dann noch einmal einen Caching-Dekorator als eine Art Caching-Aspekt, der sich wie ein Proxy um die eigentlichen RPC-Implementierungen legt. Diese speichert relevante Daten im MemCache zwischen und minimiert so (langsame) Zugriffe auf die Big-Table. Bei Schreibzugriffen l\u00f6scht der Caching-Proxy die relevanten Daten aus dem Cache, sodass sie neu geladen werden m\u00fcssen. Das ist einfach und fix.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>RDBMS kommen im distributed Cloud-Computing selten vor. Daher muss man auch die Datenhaltung \u00fcberdenken. Ein Blog-Eintrag diskutiert die \u00c4nderungen sehr gut: http:\/\/highscalability.com\/how-i-learned-stop-worrying-and-love-using-lot-disk-space-scale. Im Prinzip geht es darum, aus Joins zu verzichten, und Daten in den verschiedenen Entities zu duplizieren. Die Erfahrung habe ich bei meinen GWT und GAE\/J Projekt ebenfalls gemacht. Es f\u00fchrt zu weniger [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[19,16],"tags":[],"class_list":["post-452","post","type-post","status-publish","format-standard","hentry","category-architektur","category-gwt"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/452","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=452"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/452\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=452"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=452"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=452"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}