Advanced Features
Product Specification
The following information is provided as an overview of the C-Index/II capabilities based on Release 5.0. Additional information can be found in the documentation supplied with C-Index/II. All features are subject to change without notice.
General Information
- Uses the B+Tree indexing method with extensions for variable length record storage and faster access performance.
- Portable to most computers, including Intel, 68000 and RISC. Written entirely in portable C code, with compatibility for both ANSI and K&R standards.
- Test utilities for porting to new compilers.
- All memory models are supported.
- Object code size is approximately 75K bytes for code and 15K for data, depending on the compiler, the memory model used and what features are being used. Additional space may be required for standard C libraries that will also be linked with the completed application.
- Default B+Tree node size is 1K bytes. Can be adjusted at library compile time.
- Over 80 API function calls.
- Complete record and key space reclamation.
- Cross-platform program and file compatibility.
- Complete printed documentation (User Guide and Reference Guide).
Key Management
- Keys are variable length, 0-240 characters. Key type may be:
- null terminated string
- short
- unsigned short
- int
- long
- float
- double
- fixed length binary
- variable length binary
- custom binary
- Variable length segmented keys can be specified. Segmented keys can be any mixture of types in ascending or descending order.
- Duplicate and unique keys may be specified.
- Multiple key indexes are supported in a single file. The standard number of indexes in one file is 15 and can be configured with up to 60 indexes per file.
- Indexes may be used for random access by key value with a specification of key comparison: exact match, greater than, greater than or equal, less than, less than or equal.
- Sequential index access (sorted order) includes first, last, next and previous key retrieval.
- Ability to search for key values only, with retrieval of records as a separate operation.
- Complete control over key definition.
- Automatic maintenance of indexes for multi-keyed records.
Record Management
- Data and indexes in the same file.
- More than one type of record can be stored in a single C-Index/II file. This permits the storage of all the information for an application in a single operating system file.
- New record types may be created at run-time.
- Records may be retrieved by record number or by using random and sequential key access.
- Variable length records are supported. Fields in a record may be anywhere in memory, including mixtures of arrays, structures and individual variables. The variable length record is built automatically according to the specification of the fields contained in the record. Record specification is completely under the control of the application program. No external data definition routines are used.
- Maximum number of records is 4 Billion.
- No limit on the maximum number of fields.
- Maximum record size is 30K bytes.
File Management
- Maximum number of files open simultaneously is limited only by the operating system.
- The virtual memory buffering uses an efficient Least Recently Used storage algorithm. The application program has complete control over writing of buffers to disk.
- Any combination of files can be opened by the application program. No special record definition files are used that would restrict this process.
- Maximum file size is virtually unlimited (8 Terabytes).
- Data space is automatically reclaimed for variable length records.
PowerFail Protection
- The application program controls the manner in which virtual memory buffers are written to disk.
- Optional buffer write through forces all changes to disk immediately.
- The operating system can optionally be required to update allocation tables when C-Index/II files are extended.
- When using the maximum speed buffering option, the buffer flush function can be used to force changed information to the disk.
- Active data protection with Image Backup feature which can restore file contents to a consistent state in the event of hardware or software failure.
- Ability to check the condition of the file for corruption and rebuild the file if an error exists.
Multi-User Support
- Supports Local Area Networks using MSDOS 3.1+, Windows for Workgroups, Windows 95, Windows NT and Unix Workstations.
- Supports Unix System V and other variants of Unix.
- Can easily be ported to most operating systems that supports byte level record locking.
- All record locking and semaphore functions are operating system independent at the application program level.
- Permits mixing single and multi-user file access. "Exclusive Use" (file locking) or "Shared Use" (multi-user) access to a file is specified when the file is opened.
- Record and file locking under program control:
- High level record locking for multi-keyed records.
- Low level record locking for creating custom record management systems.
- Semaphore management functions for complex file access that requires deadlock control.
- Locked records remain readable by all processes.
- Records can be tested for lock status.
- Automatic management of virtual buffers in a shared environment. Flexible control over virtual buffers for performance optimization.
Alphabetical Function List
A
addrootassign an index to an alternate root node tree
B
bbuild rebuild btree file structure
bcheck test btree for corrupted structure
bcreate C-Index/II single-key create function
bopen new single-key open function
_bopen low level file open
C
ccheck check the integrity of a file
_ccheck low level repair to btree files
cchgcur change the current record
cchgndx change the index type after file creation
cclose close an open file
cconvert convert to C-Index/II file format
ccreate create and leave open a new file
cdelcur delete the current entry
cdelete delete an entry by key value
cdupadd add an entry, allowing duplicate keys
cfind find an entry by key value
cfirst find the first entry in an index
cflush flush C-Index/II buffers
cgetcnt get count of multi-key records in file
cgetcur get current entry
cgetcust retrieve custom information from header
cibufnum set number of virtual memory buffers
cigetrel determine relative location in index of current key
cipspsize test size of application psp
cisetrel set the relative current index position using percentage
cispeedoff turn off SpeedRead
cispeedon turn on SpeedRead
clast get last entry in an index
clrwrit clear write interrupt flag
cnext get next entry in an index
cnextrec retrieve the next available record number
cnextrep fast cnext using callback
cnextrep2 fast cnext using callback, more flexible than cnextrep
copen open a C-Index/II file for access
cprev get previous entry from an index
csetcnt set the count of active records
csetcust store custom information in header
csetfile set level of data integrity
csetrec set next available record number
cunqadd add unique key entry
D
dbcreate C-Index/II multi-key create function
dbopen new multi-key open function
dbuild rebuild multi-key records
dcheck validate multi-key records
ddelete delete a multi-key reocrd
dfind find a record by key value
dgetcnt return the count of records in a file
dgetid read idbyte of current record
dmcreate create a file with multi-user access
dmopen open a file for multi-user access
dread read the current record into the datalist
droproot drop alternate root
dseq find a record in sequence
dsetkey build a segmented key for searching
dupdate update the current record
E
endbcb free allocated buffer storage
endread end a series of index file read operations
endwrit end a series of index file write operations
I
imageback make backup of modified file data
imagerest restore C-Index file using image backup
imgclose close image backup file
imgopen open image backup file
M
mclrlock unlock the current entry
mclrrec unlock the current record
mcreate create new file for multi-user access
mopen open a C-Index/II file for multi-user access
msetlock lock current entry
msetrec lock current record
mtstlock test lock status of current entry
mtstrec test lock status of current record
mtstsema test the status of a semaphore
S
strtread start a series on index read operations
strtwrit start a series on index write operations
|