Objectivity/DB Technical Specifications
Objectivity/DB for Java
Objectivity/DB for Java provides a seamless mechanism for directly storing and manipulating Java objects in an object database.
Objectivity/DB provides full support for Java, including a language binding compliant with the ODMG 2.0 standard. Thanks to its unique “single process model” architecture for Java-based applications, Objectivity/DB for Java provides the highest-performing Java database solution in the industry today.
This architecture, where the Objectivity/DB database interface runs in the same process as the Java Virtual Machine, is faster because valuable processing cycles are not wasted on constant process switching. Objectivity/DB for Java fully supports Java multi-threading. Transactions can share threads or a thread may be dedicated to a particular transaction. Objectivity/DB for Java delivers truly scalable solutions because Objectivity/DB’s advanced distributed architecture provides a single logical view of the distributed database across multiple heterogeneous servers. The Java binding protects customer investment by ensuring that objects created using the Java language binding are accessible from C++, Smalltalk and SQL++.
This provides our customers with the flexibility to select the language best suited to their application development environment. Objectivity/DB provides full interoperability with best-of-breed development environments, facilitating rapid application development from schema maintenance to debugging, all with full transaction semantics.
- Full support for industry standard Java Virtual Machines.
- Database interface is natural for the Java developer.
- Unique “single process model” delivers high performance by reducing context switching.
- Full multi-threading support
- Investment in application development is preserved because Objectivity/DB for Java delivers true portability across a wide variety of hardware platforms.
- Freedom to choose the right development language for the application or to mix development environments because Objectivity/DB ensures that objects created using the Java language binding are accessible from C++, Smalltalk and SQL.
- Complete support and compatibility with leading integrated development environments (IDEs) including the Eclipse framework.
- Applications benefit from the high performance storage, sharing, retrieval and update of persistent objects.
- Deployed application experience high performance delivered by Objectivity/DB for Java’s unique “single process model.”
- Complete interoperability across Linux, UNIX and Microsoft Windows platforms.
C# .NET Programming and Objectivity/DB
Objectivity/.NET for C# is a .NET programming interface for Objectivity/DB.
In response to growing market interest in the Microsoft .NET framework, Objectivity, Inc. has developed Objectivity/.NET for C#, which can be used to store and manipulate .NET/C# objects in an Objectivity/DB database.
The Microsoft .NET framework is a reliable, Internet-focused, and secure software development platform. Microsoft .NET is composed of a unique bundle of features:
- An easy-to-use integrated development environment (IDE)
- A suite of .NET interoperable object-oriented programming languages, including C#
- A Common Language Infrastructure (CLI), which enables .NET language interoperability
Objectivity/.NET for C# is high-performing and fully interoperable.
Consistent with Objectivity, Inc.’s reputation for database storage solution excellence, Objectivity/.NET for C# is a high-performing and fully interoperable .NET database:
- It eliminates the mapping layer between C# and traditional databases, which improves performance and reduces development effort.
- It uses the C++/CLI managed interface which is directly linked with the multi-language Objectivity/DB kernel. This enables such Objectivity/DB supported languages as, C#, C++, Java, Smalltalk, and Objectivity/SQL++, to all share the same underlying persistent objects in the Objectivity/DB federated database. The advantage of linking the new C++/CLI interface with the Objectivity/DB kernel is that the performance is much better than with message-based alternatives.
- It provides automatic C# code generation for persistent class definitions using the ooddlx tool; Objectivity/Assist can be used as a visual interface to create and generate the persistent definitions themselves.
- It includes a managed library of Objectivity/DB access methods that can be invoked from C# (or any .NET language). Distributed applications written in C++ can migrate easily to C# by changing the application layer, and there is no need to change the schema or existing data.
- It enables you to write code in C# natively and to access the federation directly.
Objectivity/.NET for C# requires Visual Studio 2005 with .NET 2.0 on Windows XP.
Visual Studio 2005 is the most recent evolution of the Microsoft Visual Studio IDE and is an ideal environment for .NET application development. Microsoft .NET 2.0 introduces numerous new and improved features to the .NET framework, including but not limited to:
- Anonymous methods
- Delegate inference
- Generics Global namespace qualifiers
- Inline warning
- Iteration support
- Partial types
- Property visibility
- Static classes
Objectivity, Inc. is the leading provider of real-time data management solutions for applications rich in complex inter-related data.
Objectivity, Inc. is the global technology leader in data management products and services for software applications with the most demanding data management challenges. Objectivity, Inc. was founded in 1988 and is a profitable, privately held company. The core database product is Objectivity/DB. It consists of shared libraries, several servers, and a comprehensive set of administrative tools. The shared libraries and servers provide storage and retrieval of local and distributed data, and ensure data integrity through transaction management.
Other members of the Objectivity/DB product group include Objectivity/DB High Availability, Objectivity/DB In-Process Lock Server, Objectivity/DB Parallel Query Engine, and several framework products.
- Elimination of the mapping layer between C# and traditional databases
- Direct linking of the Objectivity/DB kernel with the C++/CLI managed interface
- Ability to write code in C# natively and to access the federation directly
- Ability to access the managed library of Objectivity/DB methods with any .NET language
- Improved performance and reduced development effort
- Complete interoperability between existing Objectivity/DB supported languages and .NET
- Easy migration between languages
Visual C++ Programming and Objectivity/DB
Use Objectivity/C++ and standard compilers to build high performance applications with scalability, reliability and flexibility.
With Objectivity/C++, storing the information created and used by your applications is as easy as joining Objectivity’s classes to those built for the applications. So you can take advantage of the flexibility and extensibility of an object-oriented language - and enjoy ultimate system control.
In addition, the intuitive coding style of C++ and the use of standard development tools for compiling, linking and debugging are fully supported by Objectivity/C++.
Powerful and Supportive
Objectivity/C++ supports the ANSI standard C++ language.
Objectivity/C++, the base object-oriented database product, provides the header files and link libraries for C++ application development. The Objectivity/C++ Data Definition Language (DDL) allows you to easily define the database schema using the application’s header files. The DDL pre-processor then creates all the classes needed for defining the database schema and managing the objects in the database.
Objectivity/C++ includes powerful, persistent classes for managing scalable collections. Storing and managing persistent collection classes is as simple as creating and manipulating them in memory.
Objectivity/DB supports complete language independence. Objects defined and created with any of the Objectivity/DB languages can be modified or queried with any other. Applications built with C++ let you use off-the-shelf SQL and ODBC tools to query the information.
Use Objectivity/C++ to link and compile applications using unmodified ANSI C++ compilers, translators, debuggers, and templates.
Objectivity/C++ offers flexibility in persistent data access, ranging from variable scope B-tree indexing, to keyed and named objects. Persistent classes for variable size strings and arrays are provided, as well as support for multiple inheritance among persistent and nonpersistent objects. Iterators are also provided to allow traversal of objects within physical or logical constructs in the database. Localized language support is available via multibyte characters, including the Kanji character set.
Objectivity/C++ Data Definition Language (DDL) is used to specify the database schema for Objectivity/C++ applications.
Objectivity/DDL is a refinement of standard C++ data definitions. Standard pointers are replaced by smart, persistent pointers and persistent classes inherit from an Objectivity/C++ base class. The Objectivity/DDL pre-processor translates DDL into the header and source files that define an application’s database schema. Since the syntax is almost identical to C++, defining database schema with DDL is easy. Objectivity/DDL supports schema evolution with deferred and on-demand data conversion, allowing database schema migration without bringing the database offline.
- Supports unmodified C++ compilers, translators, and debuggers.
- Supports multiple inheritance among persistent and nonpersistent objects.
- Uses a DDL processor for defining object classes.
- Supports scalable collections including sorted B-tree like collections and collections using extendible hashing.
- Provides complete interoperability across Linux, Microsoft Windows and UNIX platforms.
- Enables rapid application development with fast executables using state-of-the-art compilers.
- Supports familiar class libraries.
- Supports natural coding styles.
- Provides a schema definition procedure that is consistent with ODMG-93.
- Leverages existing hardware investment and provides flexibility in future choices.
- Kanji character set support is available.
Python Programming Language and Objectivity/DB
Whether you are a developer building a brand new application or a database administrator who needs a simpler method for querying and making quick updates, the Python programming language is a valuable option.
About the Python Programming Language
“Python is a dynamic object-oriented programming language that can be used for many kinds of software development. It offers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days. Many Python programmers report substantial productivity gains and feel the language encourages the development of higher quality, more maintainable code.” (from python.org)
How Python can be used to access and configure Objectivity/DB:
We’ve provided an API (Application Programming Interface) for Python developers within Objectivity/DB which supports Python scripts and applications that store and manipulate persistent objects, in addition to supporting ad hoc query, troubleshooting and other database administrative tasks. The Objectivity/Python API is fully interoperable with the other languages supported by Objectivity/DB, including C# .NET, C++, Java, SQL++ and XML (for import and export).
The Objectivity/Python binding provides an easy to use, dynamic, scriptable interface to Objectivity/DB. Objectivity/Python can be used to develop new applications or to link together existing ones. In addition to application development, there are many other uses for the Python binding, including:
- Database administration
The Python programming language is an excellent tool for administrators - and others to quickly observe and make changes to the database federation. Custom administration scripts can be developed that use the command line tools and/or C++ administration API to automate common tasks. For people familiar with relational databases, Python can be used as an object-oriented substitute for SQL or Interactive SQL.
- QA and testing
Test development can be simpler and faster in Python scripting. Also, Python’s excellent libraries for operating system resources such as files and sockets simplify test framework development. For example, one test framework is shipped with the Python binding, and another that coordinates distributed activity is available.
- Data analysis and troubleshooting
Python makes it easy to quickly identify discrepancies or usage patterns in databases. Simple Python scripts can be developed to troubleshoot and repair application-level data inconsistencies quickly, and Python can also be used to scan Objectivity/DB modules to ascertain active processes effectively.
More information about the python programming language
Visit the Python website at www.python.org for descriptions, tutorials, and user guides, or to download Python 2.5, the version currently supported by Objectivity/DB.
Objectivity/DB+ provides a complete ANSI-standard SQL interface.
SQL++ support means powerful access to Objectivity/DB object databases using readily available SQL-compliant tools running on a number of Windows and Unix platforms.
SQL3 object extensions support Objectivity/DB’s expanded modeling and object database capabilities are included. Objectivity/DB+ requests can use ANSI-standard SQL and object extensions for inheritance, relationships, and methods as well as non-SQL data types such as arrays.
The Objectivity/DB+ API can be used for applications developed with Objectivity/C++ that require ad hoc query access. The API includes a library of ODBC function calls for connecting to the object database, executing SQL statements, and retrieving results, as well as a standard set of error codes and data types.
Objectivity/DB supports SQL++ in two ways
- SQL-compliant server application
- ODBC Driver (available for Windows clients)
Objectivity/DB server application:
Objectivity/DB+ is primarily an ODBC server application that interprets and executes SQL requests, mapping them to Objectivity/DB objects and classes. It also includes two additional mechanisms for submitting SQL requests to Objectivity/DB databases. First, Interactive SQL++ (ISQL) provides an environment for processing ad hoc SQL queries from a command-line or text file. Second, an API is included that allows SQL statements to be embedded within Objectivity/C++ applications. This flexibility allows you to select the appropriate tool for providing SQL access into Objectivity/DB databases.
Objectivity/DB contains an SQL database interface engine adapted to the Objectivity/DB object database under license from Dharma Systems, Inc. SQL statements are interpreted by the engine, which maps SQL commands to objects managed anywhere in the network by Objectivity/DB, executes the request, and passes results back to the application or tool making the request. Excellent performance is achieved by using associations to accelerate joins.
ODBC driver (for Windows clients)
The Objectivity/DB+ ODBC Driver is a separately packaged product, and is required to access Objectivity/DB from ODBC-compliant tools. Objectivity/DB+ ODBC uses the ODBC server in Objectivity/DB+ to define, query and update Objectivity/DB databases.
SQL++ Object Extensions
The SQL++ Object Extensions allow access to Objectivity/DB objects through simple extensions to SQL that are consistent with C++ and the SQL3 standard, including:
- Access to all C++ data members or only those in the public interface through data member scooping
- Query access to the inherited attributes of an object as well as those defined in its class, supporting the C++ inheritance model
- Support for complex objects with user-defined structures. Object member fields are accessed using C++ dot notation, consistent with the Object Database Management Group (ODMG) specification for Object Query Language (OQL)
- Support for references to other objects via relationships
- Support for text and numeric arrays (both fixed and variable)
- Use of C++ operations as SQL operators
- Constraining specific operations (SELECT, DELETE, UPDATE) to individual databases or groups of objects within the federation of Objectivity/DB object databases.
- Compliant with Microsoft ODBC Level 2 specifications
- Full support for 1989 ANSI SQL
- Support for all 1992 ANSI SQL Entry Level and many Intermediate Level features
- Automatically maps standard SQL commands to objects
- SQL3 object extensions for methods, inheritance, nested structures, extents, and object Ids
- Standard SQL commands can be executed in C++ applications
- Microsoft ODBC API with full Level 2 compliance
- Works with ODBC-compliant report writers and query tools
- SQL access to information created by object-oriented C++ and Java applications
- Provides full support for an industry-standard database query language
- Provides standard database security
- Enables users to build applications with a wide variety of SQL/ODBC client/server application development tools
- Provides easy access to Objectivity/DB information
- Allows developers access to the full power of an object database [ODBMS] using SQL
- Eases migration to Objectivity/DB for RDBMS users and developers
- Easy report generation and ad hoc queries
- Provides sophisticated end users with customized access to Objectivity/DB information without programming.