<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to FileFormat_Implemented</title><link>https://sourceforge.net/p/whitebear/allura-wiki/FileFormat_Implemented/</link><description>Recent changes to FileFormat_Implemented</description><atom:link href="https://sourceforge.net/p/whitebear/allura-wiki/FileFormat_Implemented/feed" rel="self"/><language>en</language><lastBuildDate>Sat, 21 Jun 2025 15:29:39 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/whitebear/allura-wiki/FileFormat_Implemented/feed" rel="self" type="application/rss+xml"/><item><title>FileFormat_Implemented modified by silex6</title><link>https://sourceforge.net/p/whitebear/allura-wiki/FileFormat_Implemented/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v13
+++ v14
@@ -38,3 +38,6 @@
 The backup process will sequentially load each page from the database file. If the loaded page is a data page or BLOB, then the backup process will copy the *content section* of the page to the backup file. Bitmaps and master B-Tree index pages will not be backed-up, as not needed - these structures will be rebuilt / updated during the restore operation. The incremental backup process consider the page serial number. No change of the serial number = no change on the page.

 The restore process will load data from the backup file and populate the file with the content. Full restore first create a blank database file. The loaded content is added to a change set. The indexes will be updated during commit.
+
+##See also
+[File format](File_format) specification
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">silex6</dc:creator><pubDate>Sat, 21 Jun 2025 15:29:39 -0000</pubDate><guid>https://sourceforge.net288ea53be3ba63063675b5ea95a5c544a1f92b12</guid></item><item><title>FileFormat_Implemented modified by silex6</title><link>https://sourceforge.net/p/whitebear/allura-wiki/FileFormat_Implemented/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v12
+++ v13
@@ -35,5 +35,6 @@
 * Then the system lock all the pages in the scope, and actually apply the change. Nothing is changed before all the pages gain an exclusive lock

 ##Backup and restore
-The backup process will sequentially load each page from the database file. If the loaded page is a data page or BLOB, then the backup process will copy the *content section* of the page to the backup file. Bitmaps and master B-Tree index pages will not be backed-up, as not needed. The incremental backup process also consider the page serial number. No change of the serial number = no change on the page
+The backup process will sequentially load each page from the database file. If the loaded page is a data page or BLOB, then the backup process will copy the *content section* of the page to the backup file. Bitmaps and master B-Tree index pages will not be backed-up, as not needed - these structures will be rebuilt / updated during the restore operation. The incremental backup process consider the page serial number. No change of the serial number = no change on the page.
+
 The restore process will load data from the backup file and populate the file with the content. Full restore first create a blank database file. The loaded content is added to a change set. The indexes will be updated during commit.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">silex6</dc:creator><pubDate>Fri, 20 Jun 2025 07:43:55 -0000</pubDate><guid>https://sourceforge.netc68bfb4744950728ebebfd8f507b3cb2df551a87</guid></item><item><title>FileFormat_Implemented modified by silex6</title><link>https://sourceforge.net/p/whitebear/allura-wiki/FileFormat_Implemented/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v11
+++ v12
@@ -30,7 +30,7 @@
 The *content* section of each data or LOB page also start with a 4 bytes signature

 ##Banker's algorithm
-In order to avoid deadlocks and concurrent changes that led to broken database structure, the file layer implements a 2-phase updates - the banker's algorithm:
+In order to avoid deadlocks and conflicting changes that led to broken database structure, the file layer implements a 2-phase updates - the banker's algorithm:
 * during the first phase, the software simulate the data change, and record the scope - the set of pages that may need to be updated
 * Then the system lock all the pages in the scope, and actually apply the change. Nothing is changed before all the pages gain an exclusive lock

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">silex6</dc:creator><pubDate>Fri, 20 Jun 2025 07:40:14 -0000</pubDate><guid>https://sourceforge.net786078f4852f315f2732a351272706d5cbd49a47</guid></item><item><title>FileFormat_Implemented modified by silex6</title><link>https://sourceforge.net/p/whitebear/allura-wiki/FileFormat_Implemented/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v10
+++ v11
@@ -10,7 +10,7 @@
 * a *LOB* page has similar structure as a data page, but is intended to be used for BLOB storage.
 * an *index* node of the master B-Tree index. This index is used to retrieve data pages by their virtual address. 
     The index is used to map page virtual address (changeset+collection+page) to actual page location
-* a *bitmap* page contains a 35k bits map. Nth bit is '1' means the Nth page is in use. 
+* a *bitmap* page contains an array of 35k bits. Nth bit is '1' means the Nth page is in use. 
      A bitmap cover the usage of ~300 MB. The software will add a bitmap on the beginning of each 300 MB section.
 * an *empty* page. has a signature to indicate the page has been deleted and can be re-used
 * each *change set *has a header page with current status of the changeset
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">silex6</dc:creator><pubDate>Fri, 20 Jun 2025 07:35:31 -0000</pubDate><guid>https://sourceforge.net85353973ff875e020fb22d256706a9a97004aa52</guid></item><item><title>FileFormat_Implemented modified by silex6</title><link>https://sourceforge.net/p/whitebear/allura-wiki/FileFormat_Implemented/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v9
+++ v10
@@ -5,17 +5,17 @@
 Each 8kb page starts with a 4 bytes signature used to identify / validate the type of the page.

 The **file pages** may be the following:
-* a data page. The header of each data page contains a changeset number + collection number + page number, that is the *virtual address* of the page. 
+* a *data* page. The header of each data page contains a changeset number + collection number + page number, that is the *virtual address* of the page. 
       This header part is followed by a *content* section that can be used to store data
-* a LOB page has similar structure as a data page, but is intended to be used for BLOB storage.
-* a bitmap page contains a 35k bits map. Nth bit is '1' means the Nth page is in use. 
+* a *LOB* page has similar structure as a data page, but is intended to be used for BLOB storage.
+* an *index* node of the master B-Tree index. This index is used to retrieve data pages by their virtual address. 
+    The index is used to map page virtual address (changeset+collection+page) to actual page location
+* a *bitmap* page contains a 35k bits map. Nth bit is '1' means the Nth page is in use. 
      A bitmap cover the usage of ~300 MB. The software will add a bitmap on the beginning of each 300 MB section.
-* an index node of the master B-Tree index. This index is used to retrieve data pages by their virtual address. 
-    The index is used to map page virtual address (changeset+collection+page) to actual page location
-* an empty page. has a signature to indicate the page has been deleted and can be re-used
-* each change set has a header page with current status of the changeset
-* each page has a serial number, used to track changes and implement incremental backup. 
-   A new serial number is generated each time a page has been updated.  
+* an *empty* page. has a signature to indicate the page has been deleted and can be re-used
+* each *change set *has a header page with current status of the changeset
+
+each page has a serial number, used to track changes and implement incremental backup.  A new serial number is generated each time a page has been updated.  

 The **virtual address** of a page consist of the following:
 * changeset number. Non-zero for shadow copies
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">silex6</dc:creator><pubDate>Fri, 20 Jun 2025 07:34:24 -0000</pubDate><guid>https://sourceforge.net109ee6aef0eb2d4cf98cf865f35e5a6b96a9067a</guid></item><item><title>FileFormat_Implemented modified by silex6</title><link>https://sourceforge.net/p/whitebear/allura-wiki/FileFormat_Implemented/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v8
+++ v9
@@ -8,7 +8,7 @@
 * a data page. The header of each data page contains a changeset number + collection number + page number, that is the *virtual address* of the page. 
       This header part is followed by a *content* section that can be used to store data
 * a LOB page has similar structure as a data page, but is intended to be used for BLOB storage.
-* a bitmap page contains a 35k bits map, where '1' means the corresponding page is in use. 
+* a bitmap page contains a 35k bits map. Nth bit is '1' means the Nth page is in use. 
      A bitmap cover the usage of ~300 MB. The software will add a bitmap on the beginning of each 300 MB section.
 * an index node of the master B-Tree index. This index is used to retrieve data pages by their virtual address. 
     The index is used to map page virtual address (changeset+collection+page) to actual page location
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">silex6</dc:creator><pubDate>Fri, 20 Jun 2025 07:32:56 -0000</pubDate><guid>https://sourceforge.netc77d8b3cfcd0153230443a9bcdff21914a933c51</guid></item><item><title>FileFormat_Implemented modified by silex6</title><link>https://sourceforge.net/p/whitebear/allura-wiki/FileFormat_Implemented/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v7
+++ v8
@@ -8,7 +8,7 @@
 * a data page. The header of each data page contains a changeset number + collection number + page number, that is the *virtual address* of the page. 
       This header part is followed by a *content* section that can be used to store data
 * a LOB page has similar structure as a data page, but is intended to be used for BLOB storage.
-* a bitmap page contains a 8000 bits map, where '1' means the corresponding page is in use. 
+* a bitmap page contains a 35k bits map, where '1' means the corresponding page is in use. 
      A bitmap cover the usage of ~300 MB. The software will add a bitmap on the beginning of each 300 MB section.
 * an index node of the master B-Tree index. This index is used to retrieve data pages by their virtual address. 
     The index is used to map page virtual address (changeset+collection+page) to actual page location
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">silex6</dc:creator><pubDate>Fri, 20 Jun 2025 07:31:59 -0000</pubDate><guid>https://sourceforge.netee2abe3971e02d63d036d4401a82a2a2c58afffb</guid></item><item><title>FileFormat_Implemented modified by silex6</title><link>https://sourceforge.net/p/whitebear/allura-wiki/FileFormat_Implemented/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -1,3 +1,5 @@
+#File format
+
 In this database software stack, all data related to a schema is stored in a single file. The file is a set of 8Kb pages that may contains data.

 Each 8kb page starts with a 4 bytes signature used to identify / validate the type of the page.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">silex6</dc:creator><pubDate>Fri, 20 Jun 2025 07:28:30 -0000</pubDate><guid>https://sourceforge.netd202c887fede6530e88944a9821c468a7f349b6a</guid></item><item><title>FileFormat_Implemented modified by silex6</title><link>https://sourceforge.net/p/whitebear/allura-wiki/FileFormat_Implemented/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -3,11 +3,12 @@
 Each 8kb page starts with a 4 bytes signature used to identify / validate the type of the page.

 The **file pages** may be the following:
-* a data page. Each data page contains a changeset number + collection number + page number, that is the *virtual address* of the page
+* a data page. The header of each data page contains a changeset number + collection number + page number, that is the *virtual address* of the page. 
+      This header part is followed by a *content* section that can be used to store data
 * a LOB page has similar structure as a data page, but is intended to be used for BLOB storage.
 * a bitmap page contains a 8000 bits map, where '1' means the corresponding page is in use. 
      A bitmap cover the usage of ~300 MB. The software will add a bitmap on the beginning of each 300 MB section.
-* an index node. The master B-Tree index is used to retrieve data pages by their virtual address. 
+* an index node of the master B-Tree index. This index is used to retrieve data pages by their virtual address. 
     The index is used to map page virtual address (changeset+collection+page) to actual page location
 * an empty page. has a signature to indicate the page has been deleted and can be re-used
 * each change set has a header page with current status of the changeset
@@ -30,3 +31,7 @@
 In order to avoid deadlocks and concurrent changes that led to broken database structure, the file layer implements a 2-phase updates - the banker's algorithm:
 * during the first phase, the software simulate the data change, and record the scope - the set of pages that may need to be updated
 * Then the system lock all the pages in the scope, and actually apply the change. Nothing is changed before all the pages gain an exclusive lock
+
+##Backup and restore
+The backup process will sequentially load each page from the database file. If the loaded page is a data page or BLOB, then the backup process will copy the *content section* of the page to the backup file. Bitmaps and master B-Tree index pages will not be backed-up, as not needed. The incremental backup process also consider the page serial number. No change of the serial number = no change on the page
+The restore process will load data from the backup file and populate the file with the content. Full restore first create a blank database file. The loaded content is added to a change set. The indexes will be updated during commit.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">silex6</dc:creator><pubDate>Thu, 19 Jun 2025 20:54:08 -0000</pubDate><guid>https://sourceforge.netcd1ca36efdeacf446e730e0044d4502781844ac6</guid></item><item><title>FileFormat_Implemented modified by silex6</title><link>https://sourceforge.net/p/whitebear/allura-wiki/FileFormat_Implemented/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -24,6 +24,8 @@
 * B-Tree indexes. stored in a virtual file as a set of nodes bound together in a tree structure. page number 0 contains the header and a link to the top of the tree. The links stored in a B-Tree are virtual addresses of either a B-Tree node, or a record
 * LOB data. a virtual file may contains a set of BLOBs (large binary data). Where each blob may exceed the 8kb size of the page. In this case the BLOB is stored as a set of chunks in different pages of a virtual file

+The *content* section of each data or LOB page also start with a 4 bytes signature
+
 ##Banker's algorithm
 In order to avoid deadlocks and concurrent changes that led to broken database structure, the file layer implements a 2-phase updates - the banker's algorithm:
 * during the first phase, the software simulate the data change, and record the scope - the set of pages that may need to be updated
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">silex6</dc:creator><pubDate>Thu, 19 Jun 2025 20:40:58 -0000</pubDate><guid>https://sourceforge.netbbed81369d3b1a512cc762c4031a5b127423db2a</guid></item></channel></rss>