phpundmysql.de

5. Februar 2013
von (sr)
Keine Kommentare

Neue MySQL Version 5.6 verfügbar

Das ist doch seit langem mal wieder eine Meldung wert: MySQLs neues Release, über das in den vergangenen Wochen auf den Mailinglists von planetmysql und planetphp schon lauter Vorfreude gesprochen worden ist. Insbesondere im Zusammenhang mit Memcached. Wir können es kaum erwarten, dass die Version 5.6 in einiger Zeit in Amazons AWS verfügbar ist!

Oracle baut seine InnoDB Engine weiter als Standard aus und implementiert die Volltextsuche, die bisher nur MyISAM Tabellen vorbehalten war. Damit wird MyISAM wohl bald an Bedeutung verlieren und wie viele andere Storage Engines in den letzten beiden Jahren ggf. in der Versenkung verschwinden.

Zu meinen persönlichen Hightlights gehört die JSON-Unterstützung, die in Form von EXPLAIN Ausgaben erstmals Einzug in MySQL hält. Das eröffnet der Darstellung von Ausführungsplänen in visueller Form ganz neue Möglichkeiten. Man denke nur daran, was phpmyadmin, MySQL Workbench und Co so alles clientseitig aufbereiten können (MySQL Workbench ist da deutlich weiter als das gute alte phpmyadmin). Unabhängig davon hat Anders Karlsson ein Import/Export Tool für MySQL entwickelt, was die JSON Integration in Zukunft weiter befeuern könnte.

In eigener Sache: es war in letzter Zeit ruhig hier im Blog. Wir versuchen euch allerdings immer über Facebook und Google+ auf dem Laufenden zu halten. Stay tuned

19. September 2012
von (sr)
Keine Kommentare

SQL für Besserwisser: Explicit Partition Selection

„Ermutige ihn nicht auch noch!“ – hat meine Mutter immer zu meinem Bruder gesagt. Oracle zeigt sich als MySQLs Erziehungsberechtigter weniger pädagogisch. Der Datenbankserver versteht ab Version 5.6 nun auch „Explicit Partition Selection“? Verstehen Sie?

Paritionen dienen bekanntlich der Aufteilung der Daten in unterschiedliche Teilmengen, basierend auf einem oder mehreren Spalten(-werten). Der Server weiß dadurch bereits, in welcher Teilmenge er nach bestimmten Datensätzen suchen muss, was der Performance einen enormen Schub geben kann – wenn die Partitionierung und die Abfragen gut aufeinander abgestimmt sind. Dennoch lässt MySQL den Entwickler nun zusätzlich manuell Partitionen wählen:

SELECT * FROM table PARTITION (p1, p2);

Der Zusatz PARTITION (x, y, z) benennt in dem Statement namentlich, welche Partitionen MySQL durchsuchen soll. Diese Syntax bietet sich an, wenn der Server anhand der Partitionierungskriterien nicht entscheiden kann, dass nur eine Teilmenge der Tabelle relevant ist. Der Entwickler kann an dieser Stelle nachhelfen, wenn er die Inhalte fachlich korrekt einschätzen kann. Nehmen wir beispielsweise eine Datenbanktabelle an, in der die Schüler einer Schule nach Klassenstufe partitioniert sind. Wenn die SELECT-Abfrage nun nicht nach der Klasse selektiert, sondern vielleicht nur bestimmte Geburtsjahrgänge abfragen soll, kann der Entwickler das implizite Wissen nutzen und die Information manuell beisteuern.

Jeder Besserwisser hat damit einen Grund mehr, MySQL einzusetzen. Und weil man ja keine halben Sachen machen soll, funktioniert das Explicit Partition Selection nicht nur bei SELECT Statements, sondern auch bei UPDATEs und DELETEs

UPDATE table PARTITION (p1) SET column0 = 1 WHERE noid = 'abc';
DELETE FROM table PARTITION (p1, p2);

Weitere Informationen mit noch mehr Beispielen finden sich natürlich in der MySQL Dokumentation oder in den Releaseankündigungen.

Monster-icon

28. August 2012
von (sr)
Keine Kommentare

Ganz schön hässlich: Uglify 2.0

Mit Uglify lassen sich JavaScript Dateien unter anderem parsen, komprimieren und optisch aufhübschen, neudeutsch „beautifizieren“. Die erste Version war so erfolgreich, dass sie es in den Quellcode von Webkit geschafft hat, immerhin Grundlage von Apples Safari und Googles Chrome Browser.

Der Parser kommt als JavaScript Bilbliothek und gleichzeitig als Node.js Modul daher. Damit lässt er sich einerseits in eine Webseite einbinden, um adhoc Code optisch ansprechend darzustellen, andererseits aber auch über die Kommandozeile nutzen, um im Batch vorhandene JavaScript Dateien zu verarbeiten (z.B. komprimieren). Vorausgesetzt Node.js ist bereits auf dem eigenen Rechner installiert, lässt sich Uglify mit dem folgenden Einzeiler hinzufügen:

npm install uglify-js

Und wenn man für die Installation schon auf der Kommandozeile ist, gestaltet sich der Aufruf von Uglify ebenso einfach:

uglifyjs [ Optionen ] [ Quelldatei ]

Als Quelle qird eine externe JavaScript Datei angegeben, über die Optionen lässt sich die Ausgabe steuern. Die wichtigsten Optionen sind etwa

      -o dateiname: Ausgabedatei/Output
      -b: beautify, Ausgabe nicht komprimieren, wie es der Standard ist

Weitere Optionen finden sich auf der Github Seite des Projekts. Ein beispielhafter Aufruf über die Kommandozeile, der die oben genannten Optionen nutzt, ist dann (als Windows-Version):

C:\nodejs\node_modules\.bin>uglifyjs -b -o c:\pfad\zum\javascript\output.js c:\pfad\zum\javascript\input.js

Dadurch wird die Datei output.js im selben Verzeichnis wie die Eingabedatei erstellt. Dabei wird auf die Komprimierung verzichtet. Ohne den Parameter -b wird die Datei natürlich noch ein Stückchen kleiner. Als Online-Tool steht Uglify übrigens auf der folgenden Seite zur Verfügung: http://marijnhaverbeke.nl//uglifyjs.

gdm_setup

2. Juli 2012
von (sr)
Kommentare deaktiviert für APC unter Windows installieren

APC unter Windows installieren

In der Regel wird PHP Quellcode zur Ausführungszeit jedes Mal aufs Neue kompiliert. Der Alternative PHP Cache (APC) sorgt dafür, dass die kompilierten Ergebnisse zwischengespeichert werden, was zu einem deutlichen Performance-Schub führt. Wenn möglich sollte man APC oder eine Alternative (z.B. Zend Optimizer) nutzen.

Unter Windows unterscheidet sich die Installation von APC nicht von der einer anderen externen Erweiterung: Im wesentlichen muss man sich die richtige DLL-Datei herunterladen und in PHPs extension-Ordner (siehe die extension_dir Einstellung in der php.ini Datei) ablegen. Als zweiter Schritt folgt die Aktivierung des Moduls in der php.ini.

Die DDL-Datei findet sich für unterschiedliche PHP Versionen unter http://downloads.php.net/pierre/ – ein Auszug der dortigen Module ist in der ersten Abbildung zu sehen. Es gibt aktuell je ein Modul für PHP 5.3 und 5.4, beide mit VC9 kompiliert. Ist dort keine passende Version zu bekommen, findet sich alternativ eine deutlich umfangreichere Liste unter http://dev.freshsite.pl/php-accelerators/apc.html.

Da APC nicht standardmäßig in der php.ini enthalten ist, muss man den Eintrag

extension = php_apc.dll

manuell hinzufügen, zur besseren Wartbarkeit direkt im Block der anderen extension=* Einträge. Danach sollte in der Konfigurationsübersicht von phpinfo() ein Abschnitt zu APC erscheinen.

Der Eintrag in phpinfo ist selbstverständlich noch keine Garantie für die Lauffähigkeit des Caches. Die prüft man stattdessen mit

print_r(apc_sma_info());

Es erscheint eine Reihe von Informationen zum aktuellen Status des Cache. Näheres zu den APC Funktionen kann man natürlich in der PHP Doku unter http://php.net/manual/de/book.apc.php nachschlagen.

preferences-system-network-3

30. April 2012
von (sr)
Keine Kommentare

CDN für Vernachlässigte: JavaScript aus dem Content Network

jQuery gehört zu den Vorzeigeprojekten, die in unzähligen Webseiten zum Einsatz kommen. Viele Webserver binden die Bibliothek aus dem Google CDN (Content Delivery Network) ein. Davon profitieren alle Anwender, denn eine aktuelle Datei befindet sich zumeist schon im Browsercache und muss nicht erneut aus dem Netz geladen werden. Und wenn doch, dann kommt sie von einem Server „in der Nähe“. Google hält aber nur eine Hand voll der am meisten benutzten Bibliotheken für den Zugriff parat.
CDNJS möchte diese Lücke füllen und hat eine Sammlung weniger bekannter Libraries zusammengestellt, die auf einem CDN gehostet wird. Wobei „weniger bekannt“ schon fast eine Beleidigung ist. Immerhin finden sich auch Yahoos YUI, Modernizr und Twitters Bootstrap darunter. In der zweiten Reihe stehen underscore, zepto, backbone und eine ganze Menge jQuery Plugins.

Die Zusammenstellung der Bibliotheken kommt durch Abstimmung aus der Community zustande. Es besteht eine ständige Diskussion direkt auf der Webseite, wo Vorschläge für potentielle Neuzugänge gesammelt werden und das Votum per Mausklick stattfindet (Authentifizierung erfolgt mit einer Emailadresse oder per Facebook/Google Account). Das Hosting der aktuellen Auswahl übernimmt freundlicherweise Cloudflare, ein Unternehmen aus San Francisco, Kalifornien.