Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Booking Monitor Supportforum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Alexander

Anfänger

  • »Alexander« ist der Autor dieses Themas

Beiträge: 18

Wohnort: Obersulm

Beruf: Programmierer

  • Nachricht senden

1

Freitag, 18. Juni 2010, 14:38

[Aus dem Blog 15.02.2010] Umstellung der Datenbankengine auf InnoDB

Gestern wurde unter Anderem die Engine der MySQL Tabellen von MyISAM zu InnoDB gewechselt um die Transaktionssicherheit zu gewährleisten. Wenn man im System eine Buchung speichert, dann werden aktuell die Daten in 3 Tabellen gespeichert:
  1. Die Buchung selbst mit ID, Gast ID, Angebots ID, Mietanfang und -ende usw.
  2. Die Zahlungen der Buchung, da man eine Buchung in mehrere Zahlungen bezahlen kann.
  3. Die gebuchten Zusatzleistungen (Endreinigung, Fahrrad, Kinderbett etc.). Jede Zusatzleistung bekommt in der Tabelle “bm_booking_addprice” eine eigene Zeile. Mit der Anzahl von Zeit- und Mietereinheiten (dazu mehr ein anderes mal).
So sieht beispielsweise die Methode zur Speicherung einer Buchung, wobei dies noch keine Endversion ist:


PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public function save()
{
    $db BMR::getDb();
    $db->beginTransaction();
 
    try {
        $this->id $this->storage->create($this->data);
        $this->saveAddp();
        $this->savePayments();
        $db->commit();
    }
    catch (Exception $e) {
        $db->rollBack();
        throw $e;
    }

    return $this->id;
}


Was hier passiert – ist klar. Es wird innerhalb von “try” versucht alle SQL-Befehle auszuführen. Sollte eine Anweisung fehlschlagen, werden die anderen zurückgenommen und eine Fehlermeldung wird angezeigt. Ähnliches passiert während der Speicherung von Objekten und Angeboten.

Thema bewerten