Hallo liebe Community,
ich habe einen SharePoint 2013 und SQL 2014 mit aktiviertem RBS. Dazu den MS Filestream Provider installiert. Alles funktioniert soweit auch. D.h. BLOBs werden aus der Datenbank ins Dateisystem ausgelagert.
Nun versuche ich aber zu verstehen, wie der Filestream Provider funktioniert. Im SQL wurden dafür neue Tabellen angelegt. U.a. die Tabelle "mssqlrbs_filestream_data_1.rbs_filestream_data_1" in der die BLOBs gespeichert werden die über RBS an den Filestream übergeben werden.
Ab einer bestimmten Grenze (voreingestellt auf 64k) werden abgelegte BLOBs jedoch ins Dateisystem ausgelagert, um die Datenbank zu schonen.
In der Datenbank sieht das bspw. so aus.
Für einen BLOB <64k wird es inline in der Datenbank gespeichert (Einträge).
store_blob_id: irgendeine ID halt
Size: Dateigröße
blob_data_inline: 0x... (ich nehm an das ist jetzt das Binary als Hexdump, was auch die richtige Size hat)
blob_data_filestream: NULL (ist NULL, da ja der BLOB in der DB liegt und nicht im Dateisystem)
Dateisystem: nichts (keine Datei vorhanden, da es ja in der DB liegt)
Für einen BLOB >64k wird es nicht mehr inline abgelegt, sondern im Dateisystem, wie folgt:
store_blob_id: irgendeine ID wieder
Size: Dateigröße
blob_data_inline: NULL (ist jetzt NULL, da der BLOB ja nun ausgelagert wurde)
blob_data_filestream: 0x... (binary als Hexdump, ca. 44k als Größe, Frage*)
Dateisystem: hier liegt jetzt eine Datei mit der Größe "Size"
Ok, soweit so gut. Was ich aber nicht verstehe, was macht die Tabelle "blob_data_filestream"? In der liegen immer ca. 44k egal wie groß der BLOB im Dateisystem ist und vor allem, wie bekomme ich die Referenz zur Datei im Dateisystem? Ist das einfach irgendwie in dem Hexdump Filestream-intern codiert? Kennt sich da jemand aus?
Ich hoffe die Frage war verständlich,
Danke! :-)