SharePoint Remote-BLOB-Storage : Teil 3 – RBS Intensivtest (Blick ins Innere)

Im dritten Artikel der -Serie geht es nun um den -Test. Hier wird nun geprüft, ab welcher Größe die Dateien im gespeichert werden und welche Datenbanktabellen wichtig sind.

Folgende Schritte sind durchzuführen:

  • auf dem Server mit RBS öffnen Sie den RBS-Speicherort (hier C:\Blobstore\…)
  • dieses Verzeichnis sollte leer seinBlobstore-Verzeichnis
  • im laden Sie nun eine Datei von mind. 61 KB in eine Dokumentenbibliothek hoch (Schritte unter Punkt 6 aus -Artikel 2 nicht ausgeführt! – d.h. RBS Dateigröße ist hier 0 – also Standard!)
  • im RBS-Speicherort (Blobstore-Verzeichnis) sollten nun alle eben hochgeladenen Dateien zu sehen sein, die größer als 60 KB sindDateien im RBS

 

In Zusammenhang mit dem RBS sind folgende Tabellen und Views von Bedeutung:
Tabellen dbo.allDocs und dbo.allDocStreams und die
View mssqlrbs.rbs_blob_stores

In der View kann sich die aktuelle Konfiguration vom Filestream Provider ansehen. Einen Grund diese Werte zu ändern gibt es eigentlich nicht, da sie so ganz optimal sind. Hier sieht man auch den Grenzwert für das, was in den RBS und den BLOB soll. Alles ab 61KB wandert demnach in den RBS, der Rest in den BLOB-Speicher der Datenbank.

RBS Konfiguration

 

Die Tabelle allDocs enthält jedes Dokument (Objekt) aus der Inhaltsdatenbank (Content Datenbank) und speichert bspw. den Namen, Größe, Datum und Zeit und die Version. Was nicht gespeichert wird, ist der eigentliche Inhalt. Klar, der liegt ja abseits im RBS, dessen Informationen wiederum in der Tabelle allDocsStreams zu finden sind. Der Schlüssel dabei ist die Spalte ID. Im folgenden Screenshot kann man sehen, dass die Spalte Content nichts enthält und die Spalte RbsID dafür einen Wert hat. Das bedeutet, dass alles, was hochgeladen wurde, im BLOB Speicher liegt.

 

RBS-Tabellen AllDocs und AllDocStreams

 

Sollten sich noch Daten in der DB befinden, deren Wert in der Spalte Content nicht NULL ist, dann sind dies Daten, die nicht den BLOB nutzen und wahrscheinlich vor der RBS-Aktivierung hochgeladen wurden. Diese Daten kann man aber auch nachträglich noch verschieben. Dazu aber im nächsten Punkt mehr…
Bei deaktiviertem RBS wird der Inhalt also in der Spalte Content (Tab. dbo.allDocStreams) gespeichert. Der Datentyp dieser Spalte ist übrigens VARBINARY(max) mit einer Maximalgröße von 2GB. Das erklärt dann auch, was im SharePoint die Datengröße beschränkt 😉

So weit, so gut! Wer aufgepasst hat sollte sich nun eigentlich fragen, was es mit dem Grenzwert von 61KB auf sich hat und wo die Daten kleiner diesem Grenzwert liegen. Die Datei über diesem Grenzwert ist als Einzige im RBS-Verzeichnis gelandet. Wo genau ist nun aber der Rest? Laut der Datenbanktabelle allDocStreams sind alle diese Dateien im BLOB-Speicher, denn die Spalte Content ist NULL und es gibt eine RbsID. Für den RBS und damit unser Verzeichnis gilt der Grenzwert von 61KB. Unterhalb dieser Grenze geht’s also in den BLOB und der ist in der Datenbank. Das geht aber aus den Tabellen allDocs und allDocStreams nicht hervor.

 

Zusammenhang der RBS-Tabellen AllDocs und AllDocStreams

 

Hier geben die RBS-Tabellen mssqlrbs_filestream_data_1.rbs_filestream_data_1 und mssqlrbs_resources.rbs_internal_blobs etwas mehr Aufschluss. Der Schlüssel zur Verknüpfung der beiden Tabellen ist der Wert in Spalte store_blob_id. Den gibt es einmal als Typ UNIQUEID und einmal als VARBINARY, was einer Verknüpfung aber nicht im Wege steht. Und wie in der folgenden Abbildung zu sehen ist, erkennt man hier dann auch, dass die Spalte blob_data_inline all das speichert, was unter dem Grenzwert liegt und blob_data_filestream alles das, was über dem Grenzwert ist. Also einmal geht’s in den BLOB in der Datenbank und einmal in den RBS.

RBS-Tabellen mssqlrbs_filestream_data_1.rbs_filestream_data_1 und mssqlrbs_resources.rbs_internal_blobs

Um jetzt noch ein kleines Stück tiefer zu gehen, will ich noch kurz auf eine theoretische Verbindung zwischen den Tabellen allDocs, allDocStreams und den zwei eben erwähnten Tabellen mssqlrbs… eingehen.
Die Tabelle allDocStreams speichert in RbsID einen HEX-Wert, der als Dezimalzahl den Wert der Spalte blob_number aus Tab. mssqlrbs_resources.rbs_internal_blobs ergibt. In den oberen zwei Abbildungen sollte dies nachvollziehbar sein. Verknüpfen lassen sich die Spalten nicht, da dieser HEX-Wert nur ein Teil der RbsID ist. Es ist aber, zumindest theoretisch, möglich eine Verknüpfung zu erstellen und einen Zusammenhang zu erkennen.

Soviel erst einmal zu den Grundlagen, der Einrichtung und dem Verständnis zum Remote BLOB Storage. Wie das Verschieben der Daten aus der DB in den RBS funktioniert, möchte ich im nächsten Artikel erläutern.

Ein Gedanke zu „SharePoint Remote-BLOB-Storage : Teil 3 – RBS Intensivtest (Blick ins Innere)

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.