Haftpflicht Blogger
Virtual Server von Host Europe

WordPress – Datenbankanalyse

| 15. Oktober 2015 | Keine Kommentare

datenbank-wordpressIn diesem Artikel möchte ich die WordPress-Datenbank mit ihren Tabellen betrachten, die man nach einer Grundinstallation vorfindet. Es stellt sich für mich grundsätzliche Fragen:

  • Was sind die absoluten Grundtabellen ohne die WordPress scheinbar nicht auskommt?
  • Mit welchen Einträgen sind die Grundtabellen gefüllt?
  • Wie groß ist die Anzahl der Einträge?
  • Bei der Grundinstalltion ist ein Dummy-Beitrag und drei Dummy-Kommentare angelegt. In welchen Tabellen finden sich Einträge hierzu?
  • Bei der Grundinstallation sind Plugins vorhanden (Askimet, Dolly, …)? Wie stellt sich dies in den Tabellen dar?
  • Was bedeutet das Hochladen eines Bildes?  In welchen Tabellen werden Einträge vorgenommen?

 


Start mit einer neuen WordPress 4.3-de_DE Installation.

IST-Zustand:

Nach der Grundinstallation sind drei Plugins vorhanden, aber nicht aktiviert („Askismet“,“Hello Dolly“, „WP Multibyte Patch„).

Tabellenname Datensatzanzahl Bemerkung
commentmeta 0 Leer, obwohl Dummykommentar vorhanden
comment 1 Dummykommentar der Grundinstallation
links 0 Leer
options 123

Grundkonfigurationswerte der WordPress Installation,

(Beachte: die negative InnoDB Anzahl ist meistens falsch, der Wert 123 war der zutreffende Wert)

postmeta 1

meta_key = wp_page_Template

meta_value = default

posts 3

1x Seite (post_type=page):  „Sample Page“

1x Beitrag (post_type=post): „Hello World“

1x Automatisch gespeicherter Entwurf (post_type=post)

terms 1 term_id=1, name=Uncategorized
term_relationships 1 term_taxonomy_id=1
term_taxonomy 1 term_taxonomy_id=1, taxonomy=category
usermeta 15 Metadaten des ersten, angelegten Benutzers
users 1 Erster, angelegter Benutzer = Admin

Vorgang: Dummy-Kommentar löschen (Papierkorb)

Erwartung: Durch das Löschen (in den Papierkorb) dürfte keine physikalische Löschung in der  Tabelle comment erfolgen.

Ergebnis:

  • Der Eintag in comment bleibt bestehen. Ein Attribut ändert sich comment_approved=trash. 
  • In der Tabelle commentmeta werden allerdings zwei Einträge (meta_key = trash_meta_status und trash_meta_time) angelegt.

Vorgang: Dummy-Kommentar löschen (Papierkorb)

Erwartung: Durch das Löschen (in den Papierkorb) dürfte keine physikalische Löschung in der  Tabelle comment erfolgen.

Ergebnis:

  • Der Eintag in comment bleibt bestehen. Ein Attribut ändert sich comment_approved=trash. 
  • In der Tabelle commentmeta werden allerdings zwei Einträge (meta_key = trash_meta_status und trash_meta_time) angelegt.

Vorgang: Kommentar löschen (unwiderruflich)

Erwartung: Tabelleneintrag in comment und ggf. in commentmeta werden gelöscht.

Ergebnis:  Einträge wurden wie erwartet gelöscht.

 

Vorgang: Plugin „Akismet“ gelöscht“

Erwartung: Das Plugin Akismet ist deaktiviert, könnte aber einen Eintrag in der Tabelle options haben, der verändert wird.

Ergebnis

Die Veränderungen in der Tabelle options sind nicht so einfach zu identifizieren. Es sind u.a. ca. 18 Einträge der Art „transient_feed_… oder transient_timeout_…“ hinzugekommen.

Nach Durchsicht der Einträge würde ich sagen, dass vorhandene, aber deaktivierte Plugins keinen Eintrag in der Tabelle options haben.

Vorgang: Plugin „Hello Dolly“ aktiviert

Erwartung: In der Tabelle options gibt es das Attribut active_plugins, dessen Inhalt sich verändern könnte.

Ergebnis

In der Tabelle options hat sich ein Eintrag geändert:

option_name=active_plugins  mit  option_value=a:1:{i:0;s:9:“hello.php“;}

Anmerk.:  Der options-Eintrag mit dem option_name „active_plugins“ hat die option_id=33.  Da dieser Eintrag bei der Grundinstallation angelegt wurde, ist davon auszugehen, dass auch in zukünftigen Datenbanken der (doch interessante Wert) an vergleichbarer Stelle (option_id) zu finden ist.

Anmerk.: Als weiteres Eintragsbeispiel für den Eintrag active_plugins, wenn es in WordPress ein installiertes Plugin gibt und zwar das sehr nützliche Plugin „Updraft Plus“:

option_name=active_plugins  mit  option_value=a:1:{i:0;s:27:“updraftplus/updraftplus.php“;}

Vorgang: Testbild hochladen (Medien)

Erwartung: Es wird ein Tabelleneintrag mit Pfad und Dateiname angelegt und ggf. Metadaten zum Bild hinterlegt.

Ergebnis

  • In zwei Tabellen posts und postmeta werden Tabelleneinträge erzeugt. Die Bilder stehen in der Tabelle posts unter dem post_type=attachment.
  • In der Tabelle postmeta werden zwei neue Einträge mit den meta_key= „attached_file“ und „attachment_meta“ angelegt.  In dem gepackten meta_value stehen eine Reihe interessanter Informationen zum Bild, die auf der Medienmaske von WordPress nicht ausgegeben werden! Die beiden meta_key Einträge „attached_file“ und „attachment_metadata“ besitzen eine gemeinsame „post_id“ in der Tabelle postmeta.
    bild-metadaten
  • In der Tabelle posts wurde ein Eintrag mit dem post_type=attachment und einem post_mime_type (hier: image/jpeg) angelegt. Interessant ist hierbei auch, dass der Pfad zur Datei auch hier nochmals abgespeichert wurde, dieses Mal als vollständige Pfadangabe.
  • Der Primary Key für das Bild ist der Wert im Attribut guid.
  • Die Tabellen post und postmeta sind über eine 1:n Beziehung (post_id) verbunden.

    bild-posttype

(Ich habe noch nicht alle eingangs gestellten Fragen beantwortet, nachgestellt, werde aber dennoch den Artikel schon einmal veröffentlichen und zu einem späteren Zeitpunkt ergänzen.)

Kategorie: WordPress

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.