BLOBs umfassen die LONG VARCHAR-, LONG BINARY-, TEXT- und IMAGE-Datentypen.
Wenn SQL Remote eine INSERT- oder UPDATE-Anweisung repliziert, wird eine Variable anstatt des BLOB-Werts verwendet. Das bedeutet, dass der BLOB in Teile aufgegliedert und in Abschnitten repliziert wird. In der Empfängerdatenbank werden die Teile mithilfe einer SQL-Variablen wiederhergestellt und verkettet. Der Wert der Variablen wird durch eine Sequenz von Anweisungen im folgenden Format aufgebaut:
SET vble = vble || 'more_stuff'; |
Die Variable vermindert die Größe der SQL-Anweisungen, die große Werte betreffen, damit sie in eine einzelne Nachricht passen.
Die SET-Anweisungen sind getrennte SQL-Anweisungen, wodurch der BLOB tatsächlich auf mehrere SQL Remote-Nachrichten aufgeteilt wird.
Die Option blob_threshold von SQL Anywhere ermöglicht eine weitergehende Kontrolle der Replikation von großen Werten. Jeder Wert, der länger als die Option blob_threshold ist, wird repliziert, als ob er ein BLOB-Wert wäre. Weitere Hinweise finden Sie unter blob_threshold-Option [SQL Remote].
Die Datenbankoption verify_threshold kann verhindern, dass große Werte überprüft werden (in der VERIFY-Klausel von einer replizierten UPDATE-Anweisung). Der Standardwert für die Option beträgt 1000. Wenn der Datentyp einer Spalte größer als der Schwellenwert ist, werden alte Werte in der Spalte beim Replizieren einer UPDATE-Anweisung nicht überprüft. Dies hält die Größe von SQL Remote-Nachrichten niedrig, hat aber den Nachteil, dass kollidierende Aktualisierungen langer Werte nicht erkannt werden.
Verwenden Sie die folgende Methode, um Konflikte zu erkennen, wenn verify_threshold eingesetzt wird, um die Größe von Nachrichten zu vermindern.
Konfigurieren Sie Ihre Datenbanken so, dass, sobald ein BLOB aktualisiert wird, auch eine last_modified-Spalte in der gleichen Tabelle aktualisiert wird.
Konfigurieren Sie Ihre Publikationen dahingehend, dass die Spalte last_modified mit der BLOB-Spalte repliziert wird.
Wenn die BLOB-Spalte und die last_modified-Spalte repliziert werden, können die Werte in der last_modified-Spalte überprüft werden. Wenn es einen Konflikt mit der last_modified-Spalte gibt, dann gibt es auch einen Konflikt mit der BLOB-Spalte.
Weitere Hinweise finden Sie unter verify_threshold-Option [SQL Remote].
Wiederholte Aktualisierungen eines BLOBs sollten in einer Arbeitstabelle durchgeführt werden, wobei dann die endgültige Version in der replizierten Tabelle übernommen wird. Wenn zum Beispiel ein Dokument zwanzig Mal während eines Tages aktualisiert und SQL Remote einmal am Ende des Tages ausgeführt wird, werden alle zwanzig Aktualisierungen repliziert. Wenn das Dokument 200 KByte groß ist, werden 4 MByte Nachrichten gesendet.
Es wird empfohlen, dass Sie eine document_in_progress-Tabelle verwenden. Wenn der Benutzer mit der Revision des Dokuments fertig ist, verschiebt die Anwendung das Dokument von der document_in_progress-Tabelle zur replizierten Tabelle. Das Ergebnis ist eine einzige Aktualisierung (200 KByte Nachrichten).
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |