Beispiel, wie man eine Rails-Webanwendung durch Optimierung der erzeugten Datenbankabfragen besser skalieren kann.
Vortrag ber der Hamburger Ruby-Usergroup am 8.August 2012.
Risiko, Sicherheit und menschliche EntscheidungsfindungenKarsten Meier
Es gibt bestimme Muster in der Entscheidungsfindung von Menschen. Diese Muster bestimmen wesentlich mit, ob man ein Sicherheitstool eingesetzt, man eine Sicherheitsoption eingeschaltet wird, oder ob man einfach den Markennamen des Monitors als Passwort nimmt, den Anhang mit den total süßen Katzenvideo öffnet, die Eingabeparameter per Mass-Assignment an die Datenbank weiterreicht. Der Vortrag gibt einen kurzen Überblick.
Publikum sind Gestalter und Entwickler von IT-Systemen oder internetbasierten Diensten.
Der Vortrag wurde im Februar 2014 auf der Ruby User Group Hamburg gehalten.
How to optimize database access in a Ruby-on-Rails application. Recipes includes transfer less data with shadow objects or plain strings, do less database calls with include and joins, do updates directly in the database with clever sql statements.
Datenzugriff mit dem Entity Framework muss nicht langsam sein. In diesem Vortrag lernen Sie typische Stolperfallen kennen und wie Sie diese umschiffen können
Risiko, Sicherheit und menschliche EntscheidungsfindungenKarsten Meier
Es gibt bestimme Muster in der Entscheidungsfindung von Menschen. Diese Muster bestimmen wesentlich mit, ob man ein Sicherheitstool eingesetzt, man eine Sicherheitsoption eingeschaltet wird, oder ob man einfach den Markennamen des Monitors als Passwort nimmt, den Anhang mit den total süßen Katzenvideo öffnet, die Eingabeparameter per Mass-Assignment an die Datenbank weiterreicht. Der Vortrag gibt einen kurzen Überblick.
Publikum sind Gestalter und Entwickler von IT-Systemen oder internetbasierten Diensten.
Der Vortrag wurde im Februar 2014 auf der Ruby User Group Hamburg gehalten.
How to optimize database access in a Ruby-on-Rails application. Recipes includes transfer less data with shadow objects or plain strings, do less database calls with include and joins, do updates directly in the database with clever sql statements.
Datenzugriff mit dem Entity Framework muss nicht langsam sein. In diesem Vortrag lernen Sie typische Stolperfallen kennen und wie Sie diese umschiffen können
Lange Wartezeiten und mangelnde Responsivität unserer Webapplikation führen zu unzufriedenen Benutzern, was sich in hohen Absprungraten und Abwanderung zur Konkurrenz oder einfach der Weigerung, die Applikation zu verwenden, niederschlägt. Das Problem einer langsamen Applikation lässt sich jedoch leider nicht ganz so einfach lösen. Wichtig für eine nachhaltige Lösung ist das Verständnis der Abläufe im Browser. Aus diesem Grund beschäftigen wir uns hier mit Konzepten wie dem Critical Rendering Path und einigen Charakteristiken der JavaScript-Engines. Im Zuge dieses Vortrags werden einige der häufigsten Problemstellungen von Webapplikationen analysiert und Lösungsansätze und Best Practices zur Behebung der Performanceprobleme vorgestellt.
Folien zu unserem Vortrag beim Java Forum Stuttgart 2014
Besuchen Sie uns unter http://www.thecodecampus.de
Müssen Sie auch noch alte servergetriebene Java-Webanwendungen weiterentwickeln und wollen Ihre Kunden dabei den Genuss der Usability moderner Webseiten bieten?
In unserem Talk beim JavaForum Stuttgart 2014 haben wir anhand von Codebeispielen und Erfahrungsberichten gezeigt wie man schrittweise AngularJS in bestehende Anwendungen integriert. Dieser agile Ansatz liefert schnelle Ergebnisse und reduziert die Kosten und Risiken im Vergleich zu einer kompletten Umstellung.
Die Inhalte einer Webseite dürfen bei einem Wechsel auf einen anderes CMS nicht einfach verloren gehen. Da jedes CMS seine Daten etwas anders speichert ist Daten-Migration aber eine oft komplexe und aufwändige Aufgabe. Der Vortrag berichtet von einer konkreten Migration von Typo3 zu Plone, bei der Inhalte mittels Transmogrifier automatisch transferiert und angepasst wurden.
Der Talk wurde am 25.09.2013 auf der Java User Group Frankfurt gehalten und gibt einen Überblick und Einstieg in MongoDB aus der Sicht eines Java-Programmierers.
Dabei werden folgende Themen behandelt:
- Buzzword Bingo: NoSQL, Big Data, Horizontale Skalierung, CAP-Theorem, Eventual Consistency
- Übersicht über MongoDB
- Datenmanipulation: CRUD, Aggregation Framework, Map/Reduce
- Indexing
- Konsistenz beim Schreiben und Lesen von Daten
- Java API & Frameworks
MongoDB für Java Programmierer (JUGKA, 11.12.13)Uwe Printz
Der Talk wurde am 11.12.2013 auf der Java User Group Karlsruhe gehalten und gibt einen Überblick und Einstieg in MongoDB aus der Sicht eines Java-Programmierers.
Dabei werden folgende Themen behandelt:
- Buzzword Bingo: NoSQL, Big Data, Horizontale Skalierung, CAP-Theorem, Eventual Consistency
- Übersicht über MongoDB
- Datenmanipulation: CRUD, Aggregation Framework, Map/Reduce
- Indexing
- Konsistenz beim Schreiben und Lesen von Daten
- Java API & Frameworks
Viele Entwickler nutzen das Entity Framework als Blackbox. In diesem Vortrag wollen wir das Entity Framework entzaubern und einen Blick in die Blackbox werfen. Dabei werden wir darüber sprechen, was bei der Initialisierung des Entity Frameworks geschieht, wie der Status von Entitäten verwaltet wird und auch diskutieren, ob Sie auf dem Kontext tatsächlich Dispose() aufrufen müssen. Wenn Sie also wissen möchten, was das Entity Framework wirklich mit Ihrer Datenbank macht, dann sollten Sie diese Präsentation ansehe.
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsICS User Group
Gekürzter Vortrag der Connect 2014 Präsentation "BP307 Practical Solutions for Connections Administrators – Tips and Scripts for Your Daily Business" Tipps und Skripts rund um die Connections Installation, Konfiguration, Dokumentation und Troubleshooting. Wir zeigen Skripte die jedem Administrator das Leben erleichtern können.
Download der Skripts: http://github.com/stoeps13/ibmcnxscripting
Tipps und Skripts aus dem Leben eines Connections AdminsKlaus Bild
Gekürzter Vortrag der Connect 2014 Präsentation "BP307 Practical Solutions for Connections Administrators – Tips and Scripts for Your Daily Business" Tipps und Skripts rund um die Connections Installation, Konfiguration, Dokumentation und Troubleshooting. Wir zeigen Skripte die jedem Administrator das Leben erleichtern können. Download der Skripts: http://github.com/stoeps13/ibmcnxscripting
Back to Basics – Webinar 2: Ihre erste MongoDB-AnwendungMongoDB
Dies ist das zweite Webinar der Back to Basics-Serie, in dem Ihnen die Datenbank MongoDB genauer vorgestellt wird. In diesem Seminar werden wir Ihnen zeigen, wie Sie in MongoDB eine einfache Blogging-Anwendung erstellen können.
Meine Präsentation von der SEOCampixx2021 zum Thema "Einstieg in XPath für SEO" stellt die Grundlagen von XPath und deren Anwendung in verschiedenen Tools vor, um gängige Fragen aus dem SEO-Alltag zu beantworten.
Textform unter: https://www.seoseb.de/artikel/texte/xpath-fur-seo-ein-einstieg/
MySQL Performance Tuning für Oracle-DBA'sFromDual GmbH
MySQL Performance Tuning
* Was ist Performance?
* Was kostet Performance?
* Tuning Massnahmen
* MySQL Konfiguration
* Wo schauen?
* Langsame Abfragen finden
* Optimiere das Query!
* Monitoring
Weitere ähnliche Inhalte
Ähnlich wie Datenbankoptimierung für Ruby on Rails
Lange Wartezeiten und mangelnde Responsivität unserer Webapplikation führen zu unzufriedenen Benutzern, was sich in hohen Absprungraten und Abwanderung zur Konkurrenz oder einfach der Weigerung, die Applikation zu verwenden, niederschlägt. Das Problem einer langsamen Applikation lässt sich jedoch leider nicht ganz so einfach lösen. Wichtig für eine nachhaltige Lösung ist das Verständnis der Abläufe im Browser. Aus diesem Grund beschäftigen wir uns hier mit Konzepten wie dem Critical Rendering Path und einigen Charakteristiken der JavaScript-Engines. Im Zuge dieses Vortrags werden einige der häufigsten Problemstellungen von Webapplikationen analysiert und Lösungsansätze und Best Practices zur Behebung der Performanceprobleme vorgestellt.
Folien zu unserem Vortrag beim Java Forum Stuttgart 2014
Besuchen Sie uns unter http://www.thecodecampus.de
Müssen Sie auch noch alte servergetriebene Java-Webanwendungen weiterentwickeln und wollen Ihre Kunden dabei den Genuss der Usability moderner Webseiten bieten?
In unserem Talk beim JavaForum Stuttgart 2014 haben wir anhand von Codebeispielen und Erfahrungsberichten gezeigt wie man schrittweise AngularJS in bestehende Anwendungen integriert. Dieser agile Ansatz liefert schnelle Ergebnisse und reduziert die Kosten und Risiken im Vergleich zu einer kompletten Umstellung.
Die Inhalte einer Webseite dürfen bei einem Wechsel auf einen anderes CMS nicht einfach verloren gehen. Da jedes CMS seine Daten etwas anders speichert ist Daten-Migration aber eine oft komplexe und aufwändige Aufgabe. Der Vortrag berichtet von einer konkreten Migration von Typo3 zu Plone, bei der Inhalte mittels Transmogrifier automatisch transferiert und angepasst wurden.
Der Talk wurde am 25.09.2013 auf der Java User Group Frankfurt gehalten und gibt einen Überblick und Einstieg in MongoDB aus der Sicht eines Java-Programmierers.
Dabei werden folgende Themen behandelt:
- Buzzword Bingo: NoSQL, Big Data, Horizontale Skalierung, CAP-Theorem, Eventual Consistency
- Übersicht über MongoDB
- Datenmanipulation: CRUD, Aggregation Framework, Map/Reduce
- Indexing
- Konsistenz beim Schreiben und Lesen von Daten
- Java API & Frameworks
MongoDB für Java Programmierer (JUGKA, 11.12.13)Uwe Printz
Der Talk wurde am 11.12.2013 auf der Java User Group Karlsruhe gehalten und gibt einen Überblick und Einstieg in MongoDB aus der Sicht eines Java-Programmierers.
Dabei werden folgende Themen behandelt:
- Buzzword Bingo: NoSQL, Big Data, Horizontale Skalierung, CAP-Theorem, Eventual Consistency
- Übersicht über MongoDB
- Datenmanipulation: CRUD, Aggregation Framework, Map/Reduce
- Indexing
- Konsistenz beim Schreiben und Lesen von Daten
- Java API & Frameworks
Viele Entwickler nutzen das Entity Framework als Blackbox. In diesem Vortrag wollen wir das Entity Framework entzaubern und einen Blick in die Blackbox werfen. Dabei werden wir darüber sprechen, was bei der Initialisierung des Entity Frameworks geschieht, wie der Status von Entitäten verwaltet wird und auch diskutieren, ob Sie auf dem Kontext tatsächlich Dispose() aufrufen müssen. Wenn Sie also wissen möchten, was das Entity Framework wirklich mit Ihrer Datenbank macht, dann sollten Sie diese Präsentation ansehe.
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsICS User Group
Gekürzter Vortrag der Connect 2014 Präsentation "BP307 Practical Solutions for Connections Administrators – Tips and Scripts for Your Daily Business" Tipps und Skripts rund um die Connections Installation, Konfiguration, Dokumentation und Troubleshooting. Wir zeigen Skripte die jedem Administrator das Leben erleichtern können.
Download der Skripts: http://github.com/stoeps13/ibmcnxscripting
Tipps und Skripts aus dem Leben eines Connections AdminsKlaus Bild
Gekürzter Vortrag der Connect 2014 Präsentation "BP307 Practical Solutions for Connections Administrators – Tips and Scripts for Your Daily Business" Tipps und Skripts rund um die Connections Installation, Konfiguration, Dokumentation und Troubleshooting. Wir zeigen Skripte die jedem Administrator das Leben erleichtern können. Download der Skripts: http://github.com/stoeps13/ibmcnxscripting
Back to Basics – Webinar 2: Ihre erste MongoDB-AnwendungMongoDB
Dies ist das zweite Webinar der Back to Basics-Serie, in dem Ihnen die Datenbank MongoDB genauer vorgestellt wird. In diesem Seminar werden wir Ihnen zeigen, wie Sie in MongoDB eine einfache Blogging-Anwendung erstellen können.
Meine Präsentation von der SEOCampixx2021 zum Thema "Einstieg in XPath für SEO" stellt die Grundlagen von XPath und deren Anwendung in verschiedenen Tools vor, um gängige Fragen aus dem SEO-Alltag zu beantworten.
Textform unter: https://www.seoseb.de/artikel/texte/xpath-fur-seo-ein-einstieg/
MySQL Performance Tuning für Oracle-DBA'sFromDual GmbH
MySQL Performance Tuning
* Was ist Performance?
* Was kostet Performance?
* Tuning Massnahmen
* MySQL Konfiguration
* Wo schauen?
* Langsame Abfragen finden
* Optimiere das Query!
* Monitoring
Ähnlich wie Datenbankoptimierung für Ruby on Rails (20)
1. Datenbankoptimierung
Beispiele für die
Optimierung an der
Ruby-on-Rails-Schnittstelle
Karsten Meier
meier-online.com
2. Mein Background
●
1986: SQL im Studium
●
1996: QuarkXpress -> HTML Converter
●
1998-2001: WebObjects, MVC, ORM
●
2004: Erster Kontakt mit Ruby (Pleac)
●
Seit 2005: Handylearn Projects
●
Seit 2009: Nutzung von Rails
2
3. Fallbeispiel Cycosmos
●
Community
●
Webobjects
●
ORM
Enterprise Objects
●
3 Appserver,
1 DB Server
3
6. Fette Objekte
imo
id call_sign build_year
grt
teu
name
speech_of_sponsor draft
machine
imo_certificate
company legal_country
7. Schattenobjekte
ContainerVessel.
select('id, name')
order('name')
●
Read-Only ActiveRecord::ReadOnlyRecord
●
Nur angegebene Attribute
●
Exception falls
unbekannt ActiveRecord::MissingAttributeError
●
ID wirft keine Exception
8. Rosinen picken
●
Nur eine Spalte
●
Objekt unwichtig
●
pluck(column)
●
ab Rails 3.2
ContainerVessel.pluck(:name)
['Australia', 'Brisbane', 'Busan',...]
10. Outsourcing
●
Gewicht aller Container
●
Berechnung kann die DB durchführen
●
Rails sieht die einzelnen Container nicht
@vessel.containers.inject{...}
@vessel.containers.sum('weight')
13. includes()
@container_vessels =
@company.container_vessels.
order(:name).
includes(:legal_country)
SELECT "container_vessels".*
FROM "container_vessels"
WHERE "container_vessels"."company_id" = 2
ORDER BY name
SELECT "countries".*
FROM "countries"
WHERE "countries"."id" IN (8, 7, 4)
17. Rails joins
@container_vessels =
@company.container_vessels.
order(:name).
joins(:legal_country)
●
Keine flaggenlose
Schiffe
●
Keine Staaten
18. Filtern mit joins()
●
Filtern anhand von verbundenen Daten
●
Nur Zielobjekte werden geliefert
●
Vorsicht vor Vervielfachung
@companies = Company.order(:name).
joins(:container_vessels).
where(["container_vessels.build_year > ?", 2009])
SELECT "companies".*
FROM "companies"
INNER JOIN "container_vessels"
ON "container_vessels"."company_id" = "companies"."id"
WHERE (container_vessels.build_year > 2009)
ORDER BY name
19. Automatischer Join
in Associationen
class Country < ActiveRecord::Base
has_many :registering_companies,
:through => :registered_vessels,
:source => 'company',
:class_name => 'Company',
:uniq => true
...
@companies = @country.registering_companies
SELECT DISTINCT "companies".*
FROM "companies"
INNER JOIN "container_vessels"
ON "companies"."id" = "container_vessels"."company_id"
WHERE "container_vessels"."legal_country_id" = 10
25. IDs
●
ID-Vergabe kann
zentraler
Flaschenhals sein
●
IDs schon existent?
26. Transaktionen
●
gewährleisten die Konsistenz (ACID)
●
weniger Sperren, schnelleres Schreiben
●
Ab 2 Schreiboperationen -> nutzen!
27. Massenupdates
●
Firma wird verkauft
●
Alle Schiffen bekommen neuen Besitzer
UPDATE container_vessels
SET company_id = 7
WHERE company_id = 5
connection.update_sql(sql, "Updating vessel...")
28. Verbundene Updates
●
Beispiel Denormalisierung
●
Name des Landes soll auch im
Schiffsdatensatz gespeichert werden
UPDATE container_vessels, country
SET container_vessels.country_name = country.name
WHERE container_vessels.legal_country_id = country.id
29. Keine Angst for SQL
"Many people treat the relational database
like a crazy aunt who's shut up in an attic
and whom nobody wants to talk about"
Martin Fowler: OrmHate
30. ... end
Website von Karsten Meier:
meier-online.com
Bilder:
Container ship by jogdragoon, openclipart.org
Hammer5 by Krystof Jetmar, openclipart.org
OOCL Montreal & Cosco Hope fotografiert von Karsten Meier im Hamburger Hafen 2012