| !File Records |
| QTIPS - Updating Indexes |
| Indexing on Xlates |
| Rebuilding Indexes |
| How Indexes Are Updated |
| Index Record Layouts |
| Index Flush |
| REVMEDIA Revisited |
| Networked %SK% |
| Network Contention |
| Directory Exists on Novell |
| QTIPS - String Space Format Errors |
| QTIPS - Postscript Driver Problem |
| Reader's Clinic - Fixing %Windows% Using Depend.Update |
| QTIPS - Updating Indexes |
| How Indexes Are Updated |
| REVMEDIA Revisted |
| QTIPS - @Date.Format |
| @ATTACK - @Date.Format |
| QTIPS - Short Cut Implicit Formatting |
| Utility Diskette # 4 |
| Creating Your Own Background Processes |
| @ATTACK - @Last.Select.Process |
| Reader's Forum |
| QTIPS - Menu Item Pre-Processing |
RevMedia FKB
| Document | V2I9A5 |
| Title | Index Record Layouts |
| Keywords | !INDEXING FILE.DISTRIBUTOR F.DISTRIBUTOR INDEX |
| Text | !INDEXING The !INDEXING file has a simple LAYOUT Each record represents a group of pending transactions waiting to be applied to indexed files They are stored in such a way that chronological accuracy is ensured (that is if two changes are made to the same item the changes will be applied to the index files in the order they were applied to the data file) Note though that when a relationally indexed record is written to file a transaction record is generated in the !INDEXING file regardless of whether the related record was updated This is simply explained by the fact that on a network a user might have attempted a change before you and been unsuccessful Their change would be written to the !INDEXING file to await processing When the TRANSACTION record was processed their change would be applied to the related file effectively undoing your more recent change If your update had not generated a TRANSACTION record this situation would not be rectified The only "special" record on the !INDEXING file is record 0 all other records are homogeneous In record 0 field 1 the record key of the most recent TRANSACTION record is stored When an index update is attempted record 0 is read and the transactions are added to it If this forces the size of record 0 to exceed 1K the latest TRANSACTION record (pointed to in field 1) is read and the index transactions are added to the record Again if the size of the record exceeds 1K the record is split and the next transaction record created (and record 0 updated accordingly) and a pointer to the next record put into field one of the CURRENT record The TRANSACTION records have the following structure < 1 > Pointer to next TRANSACTION record < 2> File details in format FILE*ACCOUNT*VOLUME_NAME < 3> Number of transactions following for the file mentioned in field 2 Note that as each of the following transactions is four fields long this can be used to calculate offsets if the file to be updated is not available < 4 > Name of field to update < 5 > Item ID being indexed < 6 > Old Value < 7 > New Value Fields 2 through 7 repeat until the record reaches approximately 1K !filename TRANSACTION records 0 1 2 and other integers When FILE DISTRIBUTOR transfers records FROM the !INDEXING file it does so by transferring ALL index transactions for a file (regardless of field) into transaction records in the !filename file having a sequential key As transaction records are added they are created in a similar way to that in !INDEXING The records have a slightly DIFFERENT structure though as follows; < 1 > Pointer to next TRANSACTION record < 2> Name of field to update < 3> Item ID being indexed < 4 > Old Value < 5> New Value Fields 2 through 5 repeat until the record reaches approximately 1K Index_Name* Index_Name*1 2 3 and other integers When F DISTRIBUTOR transfers records FROM the process described above it separates out the index transactions into their respective fields and builds transaction records accordingly WITH each index TRANSACTION record having a key of field_name*integer The record holding the base information is not field_name*0 though it is field_name* As TRANSACTION records are added they are created in a similar way to that in !INDEXING The records have a slightly DIFFERENT structure though as follows; < 1 > Pointer to next TRANSACTION record < 2 > Item ID being indexed < 3 > Old Value < 4 > New Value (Volume 2 Issue 9 Page 7) |
Page last modified: 08/02/03