Welcome to Objectivity, Inc. -- makers of the industry leading Objectivity/DB object-oriented database management platform, Grid Certified (Levels 1 through 6), and SOA compliant We are the leader in scalable database management solutions for mission-critical, real-time and distributed applications.
Objectivity Solutions -> Objectivity/DB -> Features

Technical FAQs

ODBMS versus RDBMS

When should I use Objectivity/DB rather than an RDBMS?

If you can solve the problem with an RDBMS without a lot of effort and also achieve the performance, throughput and scalability that you need then there's no compelling reason to use an ODBMS. If any of the following conditions are met then you should consider using Objectivity/DB:

  • Complex Relationships
    If there are a lot of many-to-many relationships, tree structures or network (graph) structures.

  • Complex Data
    If the data has multiple varying length components, particularly multi-dimensional arrays, arrays of structs or binary streams.

  • Distributed Databases
    If the databases need to be geographically distributed, used in a detached mode or are accessed from a processor grid [or "farm"].

  • Multiple Languages or Platforms
    If the system will use multiple languages and/or platforms.

  • Repetitive use of Large Working Sets of Objects
    If your application performs many successive transactions on the same "working set" of objects.

  • Massive Scalability
    If you have very large amounts (Terabytes or Petabytes) of data, databases at large numbers of sites or a very large numbers of clients.

  • Expensive Mapping Layer
    There is no need to decompose objects to fit into rows and columns; or to give up on doing ad hoc queries by storing binary data as BLOB [Binary Large Objects]; or to construct artificial JOIN tables to express many-to-many, tree and network relationships.

Why is Objectivity/DB faster than an RDBMS?

Objectivity/DB is faster than an RDBMS in many instances. It may have equivalent, or even slightly worse, performance in some cases. It is almost always faster than an RDBMS in the following cases:

  • Complex Relationships
    If there are a lot of many-to-many relationships, tree structures or network (graph) structures then Objectivity/DB will traverse those relationships much faster than a relational database. If an object is linked to N other objects then an RDBMS will probably perform 2*N B-Tree [index] lookups and 2*N logical reads (into the rows of the JOIN and the target tables) to retrieve information from those other "objects". Objectivity/DB will do 1 B-Tree lookup and N+1 logical reads.

  • Complex Data
    If the data has multiple varying length components, particularly multi-dimensional arrays, arrays of structs or binary streams then Objectivity/DB has a very powerful Storage Manager that is built to manipulate those kinds of data. Relational databases are designed to manipulate data structures that neatly fit into rows and columns, where the latter are preferably of fixed length.

  • Distributed Databases
    Central servers are convenient to manage and describe, but they represent a performance bottleneck and require extensive monitoring and tuning. If it makes more sense to distribute data across machines or sites then Objectivity/DB offers a powerful and simple solution. Databases can be distributed and/or replicated around a network. They may be at different sites or simply spread out across multiple data [page] servers. The clients are presented with a single logical view of all of the objects in a federation of databases. The clients do not need to know where the data resides. This makes it relatively easy to manage an Objectivity/DB distributed configuration, as the administration commands can be run from any authorized machine in the network.

  • Multiple Languages or Platforms
    Objectivity clients and servers can run on a mixture of platforms (Linux, Unix, LynxOS or Windows). The clients can use C++, Java, Smalltalk, SQL++ or ODBC interchangeably. Objectivity/DB adds no constraints beyond those imposed by the various languages, e.g. Java and Smalltalk do not support multiple inheritance, whereas C++ does. SQL and ODBC do not support inheritance, but the Objectivity/SQL++ and Objectivity/ODBC interfaces extend SQL to handle inheritance.

  • Repetitive use of Large Working Sets of Objects
    If your application performs many successive transactions on the same "working set" of objects then it may be possible to cache thoses objects locally, avoiding the need for disk I/Os and moving data across the network. Objectivity/DB uses smart caching to reuse objects that have been cached locally and that have not been outdated by other transactions.

  • Massive Scalability
    The largest known relational databases are around 100 Terabytes. The largest Oracle database is believed to be around 50 Terabytes. Stanford Linear Accelerator Center built a Petabyte+ Objectivity/DB database. Most relational servers slow down considerably as the number of concurrent transactions approaches tens of thousand. Objectivity/DB is used in distributed telecom applications that support peak loads of 150,000 active users per rack and millions of users across the whole network, such as SprintPCS.

  • No Mapping Layer
    Objectivity/DB stores objects as objects. It does not need to convert them to serialized ASCII formats or break them down to fit into rigid row and column constructs. It stores many-to-many, tree and network relationships as named bi-directional associations, eliminating the need for JOIN tables. Eliminating the mapping layer not only saves programming time, it means that the objects can be stored and retrieved faster (because there are fewer I/Os) and with fewer CPU cycles.

Why haven't the ODBMS companies overtaken the RDBMS companies?

RDBMSs perform perfectly adequately for many types of applications, particularly in the regular Information Technology domain. ODBMSs target a narrow range of applications, so the potential market size is smaller. A loose analogy is that RDBMS companies are like the manufacturers of internal combustion engines and the ODBMS companies are like the manufacturers of jet engines. The two technologies service different markets, but there is a small degree of overlap. In general, ODBMSs can service all of the applications that an RDBMS could be used for, but the reverse is not true, at least not with anything like the same performance or ease.

The RDBMS companies also have a 15 year lead, so they have a well established and fairly loyal customer base, often with site licenses that conceal the real costs of ownership. Companies have invested a lot of resources and money to learn how to run their RDBMS technology, so they are slow to change technologies. ODBMSs are generally easier to learn and cheaper to own than an RDBMS, so an ODBMS is a more natural choice for a new product or company. The growing number of Java programmers means that ODBMSs can expect to increase their market penetration, but usually at the expense of home grown structured file systems rather than applications that are adequately serviced by RDBMS technology.

Top

Performance and Scalability

How fast is Objectivity/DB?

There are many ways of measuring the speed of a database. Unfortunately, almost all of them are only suitable for relational databases. The industry benchmarks on object databases are over ten years old. Objectivity/DB can create new objects and store them on disk at almost the maximum rate that the processor-network-disk configuration can support. In one recent benchmark Objectivity/DB ingested and stored objects at the rate of 32 Terabytes per day. It randomly or sequentially reads data at similar speeds. If a client thread can reuse data that has already been cached in memory then there is no need to read the data from disk (or across a network) in subsequent transactions. Objectivity/DB can be configured with small client caches for streaming data, or with large client caches for repetitive use of large amounts of data. In the latter case, Objectivity/DB effectively becomes an in-memory database.

How much does Objectivity/DB slow down as my database grows?

The time to store and directly access objects stays almost linear as the container, database and federated database sizes grow. Operations that need to scan whole containers, databases or the federation scale linearly. B-tree indices behave in a predictable fashion. However, note that applications can often utilize small, local indices or hash tables within containers or databases, rather than global indices across a whole federation.

What happens if the number of clients increases?

It depends on what they're doing. If they all have to share the same data then the disk holding that data will eventually saturate. It may be possible to replicate the data multiple times to share the load. If they are accessing data on different disks then there is little noticeable effect. Eventually, there may be too many clients for a particular lock server. That problem can be solved by allocating multiple lock servers.

Top

Technical Overview and Datasheets

Where can I find a quick overview of Objectivity/DB?

The product datasheets summarize the capabilities of each Objectivity product. The Technical Overview provides a more comprehensive overview, but you should also read the latest datasheets and press releases for the most timely information.

Where can I find information about the kinds of application that Objectivity/DB is deployed in?

Take a look at the general and industry focused White Papers, and Case Studies available in our extensive content library. There are news articles about specific customer deployments or industry initiatives in the Press Center.

I've looked at the information on this site and I need more technical details. Can I obtain copies of the technical documentation?

Yes. It's available for free in the Product Download, or you can Contact Us to buy paper copies. If you have specific questions please send them to us at or call your nearest Sales Office.

Top

Tools and Third Party Products Support

Does Objectivity/DB have its own Database Administration [DBA] tools?

Yes. It has a comprehensive set of online tools driven by command line, GUI and plugins for the Eclipse Open Community Interactive Development Environment [Objectivity/Assist]. There are C++ and Java APIs to all relevant tools.

What kinds of DBA tools are there?

There are tools for: creating, moving, renaming and deleting federations and databases; for running online incremental backups; for importing and exporting data in various formats; for browsing and editing databases, containers and objects; and for administering various aspects of the High Availability product, such as database replication. This is not a complete list, so please refer to the Database Administration manual for the latest updates.

Can I run Third Party DBA tools to tune Objectivity/DB?

Hardware and operating system vendor tools will provide very useful information about Objectivity/DB processes, servers and I/O activity. However, DBA tools designed for relational databases will generally not yield much of interest as they do not understand the structure of objects.

Can I run any other (non-DBA) tools with Objectivity/DB?

Yes, there are fully supported links with software from Objectivity's partners, such as BEA and Rational. Also, any ODBC-compliant tool can be configured to run with Objectivity/SQL++.

Top

Configuring and Supporting Systems

What do I have to do to deploy my database application once it has been Quality Assured?

If you will only be delivering software, without any preloaded databases, then all you have to do is create a "master" federated database containing the schema(s) that you compiled your code with. You copy the federated database, some of the Objectivity/DB runtime libraries (listed in the Database Administration manuals) and your own software and installation material onto the delivery vehicle (tape, CD, tar/ZIP file etc.)During the installation of your software you start one or more lock server and Advanced Multithreaded Server processes, then run ooinstallfd to make the federated database available. You then install your Objectivity/DB applications and start them up; or allow end users to install and start them.If you also want to deliver some preloaded databases (e.g. with configuration data, libraries or other groups of objects) then you use oocopydb to produce files that can be copied to your delivery vehicle. You then run ooattachdb after running ooinstallfd at the installation site.

What do I do if there is a runtime error in a deployed system?

You need to gather as much information as you can about the state of the system as you can. This topic is covered in the High Availability Deployment Review (a Professional Services Package). Each new release of Objectivity/DB introduces additional tools to help you and Objectivity's Customer Support Engineers diagnose and correct a problem. Some sites own very sensitive information, so special arrangements may need to be made to reproduce the error off-site with synthetic data.

Can you send Objectivity specialists to a site to help diagnose an urgent problem?

Yes, by special arrangement. Many of the Professional Services Packages are designed to help minimize downtime. Prevention is a lot less painful than a cure. Please contact Customer Support for further details.

How easy is it to configure an Objectivity/DB server?

Very easy. There are actually two kinds of Objectivity/DB server. All remote file I/O is performed by Advanced Multithreaded Server processes. Transactions are managed by Lock Server processes. Each or these has only a few configuration parameters to worry about, such as the number of threads to be run. Objectivity/DB uses a distributed processing architecture, so most performance tuning is done within individual client threads or processes, rather than within the servers.

How do I decide how to distribute the servers around a network?

It is almost always faster to access data on a local machine or LAN than over a MAN, WAN or the Internet. So, if it is possible to configure frequently used data as close to the local users as possible there will be significant performance improvements in today's networks. If the data is mainly read-only then it can be replicated to as many sites as necessary. Replication is transparent to applications. The Database Administration Course and the Database Design Review (a Professional Service Package) cover the physical design of a federated database in detail. The High Availability Deployment Review covers database and system resource replication.

How can I minimize the time it takes to store, find or update objects?

The application designers and programmers have a lot of control over the way in which objects are manipulated in memory and clustered on disk. It is possible to control the initial size, growth rate and maximum size of the in-memory cache. Objects can be clustered into the same logical page within logical containers and databases. The training courses plus the Database Design Review and the Performance Tuning Professional Service Packages provide full training on this topic.

Top

Languages and Platforms

What languages does Objectivity/DB support?

Objectivity/DB supports the following languages: C#; C++; Java; Python, Smalltalk; SQL++ (SQL with object oriented extensions) and XML (for import and export only).

What platforms does Objectivity/DB run on?

The Objectivity/DB management product line is available on most major platforms, including:

  • Windows Server 2008 / Server 2003 / 2000 / XP / Vista / x64
  • UNIX & Linux operating systems
  • Hewlett-Packard 11i V2 Itanium / PA-Risc
  • IBM AIX
  • Intel RHEL and SUSE
  • Silicon Graphics Altix
  • Sun Microsystems Solaris
  • AMD Opteron RHEL / Solaris
  • Linux for zSeries
  • Motorola LynxOS

Does Objectivity/DB support SQL?

Yes. When a C++ or Java programmer introduces an object class to Objectivity/DB the tools or APIs automatically generate appropriate table and column views of that data for SQL and ODBC applications. SQL++ extends regular SQL to add inheritance, structured fields, methods expressed as functions and named associations. ODBC applications do not need to be aware that they are interfacing with an ODBMS rather than an RDBMS. However, some C++, Java and Smalltalk data types, such as multi-dimensional arrays, need to be represented as SQL VIEWS by writing appropriate conversion methods.

Does Objectivity/DB work with ODBC tools like Crystal Reports and Microsoft Access?

Yes. ODBC clients simply install and link an ODBC client side driver supplied with Objectivity/SQL++. The driver communicates with a server process that interprets the ODBC message and calls Objectivity/SQL++ to service the request.

Does Objectivity/DB work with XML?

Yes. There are XML import and export tools that handle class definitions and object instances. You can export objects created by any other language supported by Objectivity into XML files. You can import XML into an Objectivity/DB federation and then manipulate them in C++, Java, Smalltalk or SQL++.

Top

Downloads

Can I download a trial version of Objectivity/DB?

Yes. It contains the latest release of all major platforms and languages.

Learn Evaluate Get Help

Is it a restricted download?

The download is fully functional, i.e. no product features are inhibited or omitted. However, the License Manager will time out in 60 days. You may be able to extend your evaluation by contacting Customer Support. There are reasonable restrictions on what you may use the downloaded software for. You are not allowed to sell it or any application that embeds it without purchasing an appropriate license, for instance. Please read the Terms and Conditions in the download area for full details. Internal Research and Development [IRAD] partners may have additional rights.

What is included in the download?

The download contains the Objectivity software, documentation, sample applications and tutorials.

What should I do if I run into problems or need clarification of technical features?

Contact Customer Support by email or fax, or through your customer account.

What happens if I decide to purchase Objectivity/DB? Do I have to re-install it? What happens to the applications and databases I've built?

After you purchase Objectivity products we simply send you a new license. You do not have to reinstall the software. You simply apply the new license to any federations that you want to continue using with your newly purchased software. It takes a few seconds to run the tool. That's all that has to be done. However, we'd prefer that you also purchase training and appropriate Professional Service Packages, as we know that they can dramatically affect the quality, performance, reliability and maintainability of your new Objectivity/DB application.

Top

Bookmark and Share
Objectivity Solutions -> Objectivity/DB -> Features