In addition to the supported host, target and hardware platforms listed on the Supported Platforms page, the following sections describe some technical specifications and features of eXtremeDB and eXtremeSQL.
Database Limits
Following are the default maximum parameters for eXtremeDB databases on 32-bit and 64-bit architectures (these may be modified in source code and/or provided as pre-built binary libraries by McObject Support):
Limit 32-bit 64-bit Maximum objects per database 2^32 = 4,294,967,295 2^64 = 18,446,744,073,709,551,616 Maximum classes per database 65,535 65,535 Maximum fields or vectors per class 65,535 65,535 Maximum fields per index 65,535 65,535 Maximum elements per vector 65,535 65,535 Memory requirements As little as 200K As little as 200K Maximum databases open simultaneously 32 32 Maximum simultaneous connections per database 100 100
Programming Interfaces
C and C++
A C library of standard database functions (e.g. cursor functions) provides an interface common to all eXtremeDB applications. And an application-specific native C and/or C++ API is generated when a database schema is compiled. Because it is based on the developer’s data design, this interface is intuitive and optimized for a project’s exact needs.
Python, Java and .NET Framework
Native language interfaces are provided for Python, Java and C#.
SQL
In addition, eXtremeSQL provides embedded SQL, JDBC, ODBC and LINQ interfaces, and the ability to write user-defined functions ("stored procedures") in Lua.
Index types and queries
eXtremeDB supports virtually all data types, including structures, arrays, vectors and BLOBs and Unicode. Querying methods using native language interfaces include the following index types:
- hash indexes for exact match searches,
- R-trees for GIS/mapping applications,
- B-tree indexes support queries for pattern match, range retrieval and sorting,
- KD-trees for multidimensional data,
- Patricia tries (useful for prefix searches such as IP and telecom routing) and
- Trigram indexes for text searches when the exact spelling of the target object is not precisely known,
- Object-identifier (OID) with associated references provide direct data access and Autoid indexes support system-defined object identifiers.
Rather than storing duplicate data, indexes contain only a reference to data, keeping memory requirements to an absolute minimum. Additionally, Voluntary indexes enable program control over population of the index.
eXtremeSQL provides the SQL
create index
statement which supports the above index types and the complete range of SQL query techniques (with additional support for thesequence
data type) through theselect
statement.Supported Data Types
eXtremeDB supports the following data types:
- 1, 2, 4, 8-byte signed/unsigned integers
- boolean
- float, double
- date, time, datetime
- char (fixed length)
- string (variable length)
- fixed-size array
- vector (variable-length array)
- structs (embedded to any depth)
- binary large object (BLOB)
- autoid (auto-incremented)
- user-defined object-id (OID) and references
- unicode (wchar)
Debugging eXtremeDB Applications
The eXtremeDB debug-mode run-time includes numerous traps in the database code, for detection and easy remediation of programming errors. The eXtremeDB-generated programming interface exploits the type-checking features of the compiler, with programmer mistakes generating a compile-time error.
The entire eXtremeDB database runtime implementation is available with source code, for complete control of the development environment.
Supported Development Environments
Among the most popular development tools for eXtremeDB applications are the following :
- gnu toolchain (gcc 4.1 and higher, clang, xlc, icc)
- Tornado 2.0 and 2.2 (GNU and Diab compilers)
- QNX Momentics IDE (qcc: C, C++, Embedded C++)
- GreenHills Multi
- Microsoft Visual Studio (C/C++, .NET Framework)
- Eclipse
- XCode