Package com.mckoi.database
Class V2MasterTableDataSource
java.lang.Object
com.mckoi.database.V2MasterTableDataSource
A MasterTableDataSource that is backed by a non-shared com.mckoi.store.Store
object. The store interface allows us a great deal of flexibility because
we can map a store around different underlying devices. For example, a
store could map to a memory region, a memory mapped file, or a standard
random access file.
Unlike V1MasterTableDataSource, this manages data and index information in a single store which can be backed by a single file in the file system.
The structure of the store comprises of a header block that contains the following information;
HEADER BLOCK
+-------------------------------+
| version |
| table id |
| table sequence id |
| pointer to DataTableDef |
| pointer to DataIndexSetDef |
| pointer to index block |
| LIST BLOCK HEADER pointer |
+-------------------------------+
Each record is comprised of a header which contains offsets to the fields in the record, and a serializable of the fields themselves.
- Author:
- Tobias Downer
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected BlobStoreInterfaceAn abstracted reference to a BlobStore for managing blob references and blob data.protected final com.mckoi.database.DataCellCacheA reference to the DataCellCache object.protected intThe number of columns in this table.protected com.mckoi.database.RIDList[]The list of RIDList objects for each column in this table.protected booleanSet to false to disable cell caching.protected Stringprotected Stringprotected com.mckoi.database.MasterTableGarbageCollectorManages scanning and deleting of rows marked as deleted within this data source.protected DataIndexSetDefA DataIndexSetDef object that describes the indexes on the table.protected Stringprotected booleanTrue if this table source is closed.protected StringThe keys we use for Database.stats() for information for this table.protected DataTableDefA DataTableDef object that describes the table topology.protected intAn integer that uniquely identifies this data source within the conglomerate.protected com.mckoi.database.MultiVersionTableIndicesA multi-version representation of the table indices kept for this table including the row list and the scheme indices.protected String -
Constructor Summary
ConstructorsConstructorDescriptionV2MasterTableDataSource(TransactionSystem system, com.mckoi.database.StoreSystem store_system, com.mckoi.database.OpenTransactionList open_transactions, BlobStoreInterface blob_store_interface) The Constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoidcheckAndRepair(String file_name, UserTerminal terminal) Performs a complete check and repair of the table.protected voidClears all root locks on the table.final DebugLoggerDebug()Returns the DebugLogger object that can be used to log debug messages.protected voidThis is called by the 'open' method.getName()Returns the name of this table source.Returns the schema name of this table source.final TransactionSystemReturns the TransactionSystem for this table.Returns the TableName of this table source.protected voidLoads the internal variables.protected static StringmakeTableFileName(TransactionSystem system, int table_id, TableName table_name) Creates a unique table name to give a file.protected TableDataSourceminimalTableDataSource(IntegerListInterface master_index) Creates a minimal TableDataSource object that represents this MasterTableDataSource.voidOpens an existing master table from the file system at the path of the conglomerate this belongs to.voidLooks for any leaks in the file.protected voidSets up the DataIndexSetDef object from the information set in this object.protected voidsetupDataTableDef(DataTableDef table_def) Sets up the DataTableDef.protected com.mckoi.database.StoreSystemReturns the StoreSystem object used to manage stores in the persistence system.toString()For diagnostic.
-
Field Details
-
table_id
protected int table_idAn integer that uniquely identifies this data source within the conglomerate. -
is_closed
protected boolean is_closedTrue if this table source is closed. -
table_def
A DataTableDef object that describes the table topology. This includes the name and columns of the table. -
index_def
A DataIndexSetDef object that describes the indexes on the table. -
table_indices
protected com.mckoi.database.MultiVersionTableIndices table_indicesA multi-version representation of the table indices kept for this table including the row list and the scheme indices. This contains the transaction journals. -
column_rid_list
protected com.mckoi.database.RIDList[] column_rid_listThe list of RIDList objects for each column in this table. This is a sorting optimization. -
DATA_CELL_CACHING
protected boolean DATA_CELL_CACHINGSet to false to disable cell caching. -
cache
protected final com.mckoi.database.DataCellCache cacheA reference to the DataCellCache object. -
column_count
protected int column_countThe number of columns in this table. This is a cached optimization. -
garbage_collector
protected com.mckoi.database.MasterTableGarbageCollector garbage_collectorManages scanning and deleting of rows marked as deleted within this data source. -
blob_store_interface
An abstracted reference to a BlobStore for managing blob references and blob data. -
root_lock_key
The keys we use for Database.stats() for information for this table. -
total_hits_key
-
file_hits_key
-
delete_hits_key
-
insert_hits_key
-
-
Constructor Details
-
V2MasterTableDataSource
public V2MasterTableDataSource(TransactionSystem system, com.mckoi.database.StoreSystem store_system, com.mckoi.database.OpenTransactionList open_transactions, BlobStoreInterface blob_store_interface) The Constructor.
-
-
Method Details
-
open
Opens an existing master table from the file system at the path of the conglomerate this belongs to. This will set up the internal state of this object with the data read in.- Throws:
IOException
-
scanForLeaks
Looks for any leaks in the file. This works by walking through the file and index area graph and 'remembering' all areas that were read. The store is then checked that all other areas except these are deleted.Assumes the master table is open.
- Throws:
IOException
-
checkAndRepair
Performs a complete check and repair of the table. The table must not have been opened before this method is called. The given UserTerminal parameter is an implementation of a user interface that is used to ask any questions and output the results of the check.- Throws:
IOException
-
toString
For diagnostic. -
getSystem
Returns the TransactionSystem for this table. -
Debug
Returns the DebugLogger object that can be used to log debug messages. -
getTableName
Returns the TableName of this table source. -
getName
Returns the name of this table source. -
getSchema
Returns the schema name of this table source. -
makeTableFileName
protected static String makeTableFileName(TransactionSystem system, int table_id, TableName table_name) Creates a unique table name to give a file. This could be changed to suit a particular OS's style of filesystem namespace. Or it could return some arbitarily unique number. However, for debugging purposes it's often a good idea to return a name that a user can recognise.The 'table_id' is a guarenteed unique number between all tables.
-
minimalTableDataSource
Creates a minimal TableDataSource object that represents this MasterTableDataSource. It does not implement the 'getColumnScheme' method. -
setupDataIndexSetDef
protected void setupDataIndexSetDef()Sets up the DataIndexSetDef object from the information set in this object. This will only setup a default IndexSetDef on the information in the DataTableDef. -
setupDataTableDef
Sets up the DataTableDef. This would typically only ever be called from the 'create' method. -
loadInternal
protected void loadInternal()Loads the internal variables. -
storeSystem
protected com.mckoi.database.StoreSystem storeSystem()Returns the StoreSystem object used to manage stores in the persistence system. -
doOpeningScan
This is called by the 'open' method. It performs a scan of the records and marks any rows that are uncommitted as deleted. It also checks that the row is not within the master index.- Throws:
IOException
-
clearAllRootLocks
protected void clearAllRootLocks()Clears all root locks on the table. Should only be used during cleanup of the table and will by definition invalidate the table.
-