The correct evaluation and selection of object-oriented database

Source: Internet
Author: User
Tags failover interface sql query version tru64 file permissions access
Object | evaluation | data | database (Source: http://www.ccidnet.com)

I. Overview
As with relational databases, there are many object-oriented databases (object-oriented Database,oodb) available on the market. However, there is no uniform standard on price, function, feature and system of OODB. This article will help you understand the differences between the various OODB systems and help you narrow your selection when choosing the right Oodb for your application.

According to the standards, the resources I use to evaluate these products are also diverse. In most cases, the evaluation of this article is based on personal experience and perceptions, and other details are obtained directly from the evaluation software or from the data provided by the supplier. Be sure to test your application thoroughly before making a choice. After all, you and I may think differently.

The four OODB products we will analyze are ObjectStore, Versant Developer Suite, poet Fastobjects, and objectivity. Each product will be evaluated in the following ways:
Price and licensing compliance compatibility feature scalability and availability
Ii. Prices and licensing
The project cost includes two aspects: initial cost and maintenance cost. Initial costs often dominate the evaluation, but issues such as annual support, online discussions, and novice training should be considered as product cost factors. The price of OODB is usually expensive, even when compared to the large RDBMS of its competitors.

Standard consideration ... Evaluation software can be downloaded free of charge, full-featured trial software. Development version License low price, based on the number of users license. Product License low price, according to the number of CPUs per unit of license, low annual maintenance costs. Online support responsible technical support staff, a large number of useful technical notes, demonstrations and forums. Active user community A large number of enthusiastic users, newsgroups rich in useful activities, the support of unofficial websites.
Third, compliance
Compared with relational databases, Oodb generally have less stringent requirements for compliance standards. Most oodb use their own unique methods to achieve a variety of features. Since there is no clear standard evaluation oodb, the standard of object database management organization (Management GROUP,ODMG) is the best criterion at the moment. But it is difficult to find a oodb product that is completely compliant with ODMG 2.0 or 3.0 specifications (The 2.0 specification is a fairly loose and imperfect specification compared to the 3.0 specifications that have been in a oodb year). Perhaps in the near future, we will use the Java Data Object (JDO) specification to evaluate the Java OODB.
Standard consideration ... Compliance with the Object definition language (ODL) is fully compliant with the specification of the ODMG 3.0 specification for object definitions. Compliance with the Object Query Language (OQL) is fully compliant with the ODMG 3.0 specification for queries. Compliant Java compliance with the ODMG 3.0 specification means the proper implementation of Java api/binding. Compliance with the ODMG 3.0 specification for C + + means proper implementation of the C + + API. Compliance with Smalltalk is fully compliant with the ODMG 3.0 specification (this is an optional standard if your system is unlikely to use Smalltalk).
Iv. compatibility
For both language and platform, engineering demands for scalability are increasing. Oodb should not affect this scalability on any one hand. However, platform support is costly, requiring extensive testing and extensive documentation. As a result, some vendors ' products support only a small number of platforms. It is difficult to find a solution that is tightly integrated with a variety of mainstream OO languages, such as C + +, Java, Smalltalk, and so on.

Standard consideration ... Supported platforms with extensive platform support-I always consider three key platforms: linux,win2000, and Solaris. Your preferred platform may be different. Java integrates a wide range of JDK support, closely tracking the latest JDK specifications. C + + Integrated compiler supports persistent class specialization avoid tight integration-looking for databases that do not require modification of persistent classes in code. This is a preference-related choice, so you should carefully examine the pros and cons of the process after the extension and expansion/implementation approach. An embeddable version consumes only a small amount of disk space, RAM, and the ability to cancel some Non-core functionality.
Five, features
Each of these database scenarios has its own unique features. Here I highlight some of the core features that are valuable for development projects:

Standard consideration ... The database browses the ability to manage databases, modify content, update patterns, and generate content reports. Client buffering improves the ability of the "hot" database to respond quickly, and minimizes the extraction of the database while ensuring object synchronization. Database security user, user group access control, preferably in the object (if not the container) level. XML supports tools that seamlessly extract from the database and insert XML into the database. Environment integration such as IDE integration and togethersoft to improve development efficiency can improve development efficiency.
Six, performance
In some aspects of performance, Oodb occupies an advantage, but in other respects, Oodb is deficient. It is too verbose to provide detailed performance test data for each product here, but it is important to understand the limitations of the system and functionality that can affect performance.

Standard consideration ... Lock strategy Application-object-level locking mechanism can bring great convenience, but the page-level locking mechanism in some conditions can bring a leap in performance. Load balancing transparently distributes databases, calls methods on remote servers, and the ability to share objects between concurrent threads/accesses. The larger the maximum database size the better. Transaction support checkpoints: A transaction is shared by multiple threads, one thread consumes multiple transactions, and when a given product's implementation affects your application, make sure you understand the working mechanism of client/server synchronization in conjunction with client buffering. Information about query/performance The ability to extract this information can help you identify performance bottlenecks; Oodb offers less tuning and tuning options than RDB, but some tools that help you extract performance information and interpret query execution plans are still useful.
Vii. Scalability and Availability
While not every project requires enterprise-class recovery, availability, scalability, it is worthwhile to know that the Oodb solution you have chosen can be developed along with the project.

Standard consideration ... Switch transparently to a redundant database when there is a problem with the failover primary server. Load balancing the ability to distribute loads to redundant servers, split objects across multiple servers, and synchronize data views between multiple client object buffers. Replication and incremental backups seamlessly replicate data and support load balancing and recovery capabilities. A dedicated query engine (Ad Hoc query engine) a rich query language that allows fast access to data; Ideally, it should be able to connect data across objects that are not directly associated.
Viii. Product Reviews
Below, I evaluated the following products according to the criteria presented above:

ObjectStore Versant Developer Suite poet Fastobjects objectivity
Please refer to Cetus OODB area, where there is a fairly new OODB vendor list.
Standard Objectstoreversant Developer suitepoetobjectivity background Information Supplier object Designversantpoetobjectivity Products Home objectstorevdsfastobjectsobjectivity Technical Reference [29]spec or PDF data sheetoverview or Manualsjava or C++pdf overview or specific data sheets version 6.06.0t7 8.0[16]6.0 price and license trial version 30 days trial [1]60 Day Trial feature limit 90 days trial license fee [2][2][2][ 2] Online support is OK [3][9] fair [9] good [19] good user community [23] medium [4] medium minor moderate submissive ODL compliant nnn incomplete 2.0/3.0 support OQL Compliance NN[10]ODMG 3.0[17]njava Interface Compliance ODMG 3.0ODMG 3.0ODMG 3.0ODMG 3.0c++ interface support ODMG 3.0n/a incomplete 2.0/3.0 support Smalltalk interface N/AN/AN/AODMG 3.0 compatibility supported UNIX operating system Linux,solaris, Hp-ux,irix,aix,tru64 [Ref]linux,solaris,hp-ux,irix,sgi,tru64 [Ref]linux,solaris,hp-ux[ref]linux,solaris,hp-ux, Irix,aix,tru64 [ref]-supported Windows operating system 98,nt4,2000 [ref]nt4,2000 [ref]98,nt4,2000 [ref]98,nt4,2000 [REF]JDK] 1.0,1.1–1.3 [22]1.2,1.31.1-1.31.22,1.3 Persistence class specialization n[5]n[5]n[5]y[24] embeddable version yny[18]n functionality database browser yyyy client buffering yyyy database security database or segment user/ Group Control database user control [14] User/Group control database for specific classes and databases users control XML support YY[15] part [20] part [20] Performance Lock policy database, page, or object-level Object-class container level [25] The largest database size [7] hundreds of GB? Dozens of GB to hundreds of GB? [12]? According to the report, it achieves TB-level transactional support for deadlock detection, MVCC [8] Distributed transaction management (similarTo the concept of MVCC) checkpoint, shared or parallel transactions, nested transaction checkpoints, deadlock detection, shared or parallel transactions providing information about query/performance YN[13]NN[26] scalability failover (failover) yyy Optional [27] Load Balancing section [6] section [11] Part [21] optional [27] Replication and incremental backup YYY Optional [27] specialized query engine (Ad Hoc query engine) has no oql. Using collections and Query Objects y[10]y (OQL) y[28]
Conclusion
I wish I had not yet given the impression of a oodb fanatic--for most of the applications I use, I think there is a certain risk to applying oodb. However, once you understand and familiarize yourself with the oodb, they can be a handy tool. I personally prefer poet and ObjectStore, but I think they are very useful.

Note
[1] Only Single Instance Personal Edition (Single-instance Personal edition,pse) is provided for download. [2] The quotation can be obtained from the Sales Representative office. [3] Some support services are provided only to owners of effective maintenance contracts. [4] Community size is only relative to other OODB products. Oodb's user community is far less than the user community of the relational database. [5] The persistent class must be processed afterwards. [6] Load balancing between multiple databases seems unlikely. Instead, processing is distributed through client buffering, which reduces the load on the server by transparently moving more logic and computing tasks to the client. [7] These data are unconfirmed, mainly from the supplier's statement. When discussing the size of a database, the complexity, size, and "reasonable response time" of the object are factors that must be considered. [8] Multi-version concurrency control (multiversion concurrency CONTROL,MVCC) is a non-standard technique used to maintain the consistency of buffer client and server-side data views during concurrent read/write operations. [9] can benefit from a large number of online demos, FAQs, forums, all of which are open to existing and potential users. [10] A proprietary VQL language has been implemented, and it has some in common with OQL. [11] Partial load-balancing capabilities are realized by replication, and, presumably, load balancing can be implemented by redirecting requests to multiple databases, but this is unproven. Transparent replication between multiple databases ensures that there is an up-to-date data on each oodb. [12] A 64-bit version is needed in order to exceed the 2^32 limit in the number of Nei Cun, record counts, etc. the 64-bit version of Versant has been constructed, but has not been validated on all of the platforms it supports. [13] provides some tools for querying adjustments and timing. [14] If it's not where I missed it, it doesn't seem to mention a less granular security mechanism or the ability to provide it in the API. What I've found specifically is database-level access control implemented through the OS-enforced database file permissions. [15] The tools that need to be provided separately. [16] Poet is divided into three types: T2 (real-time embedded Java), E7 (embedded java/c++), and T7 (Enterprise Java/c++). The version number is not clearly displayed and the T7 v8.0 from the file version number, currently 8.0.0.19. [17] There is no guarantee that it fully supports ODMG 3.0 OQL, but the coverage appears to be quite extensive. [18] contains an embedded version of C + + or Java, and a real-time embedded version of Java. [19] Online Support website community.fastobjects.com is very comprehensive, but often very slow. I have a high-speed connection, but it regularly returns a page timeout error.[20] I can only use the Bulk Import/export feature through the command-line interface. [21] There is no significant markup for distributed functionality, and I have not used a distributed configuration. If the database replication in the poet configuration has the "Reader scalability" option, load Balancing can be implemented to some extent so that queries can be made to read-only subordinate databases. [22] At least JDK 1.2 appears to be the best, and you'll get a better set of support and avoid some of the "quirk" issues that have already been reported (not sure if JDK 1.1 solves these problems). [23] It is difficult to assess. I'll start with an analysis of the revenue and internet/newsgroup discussions. See it as a guess. [24] The identity of the persistent class is either that it derives from ooobj, or it implements the Iooobj interface. [25] While locking the entire container sounds scary, its basic idea is that it will significantly reduce the load on the lock server. [26] provides some Run-time query debugging capabilities through API calls and statistical functions. [27] Some information, such as this one, shows that these options will increase costs. [28] There is no equivalent language for similar oql. sql++ is a SQL-compliant feature that allows SQL queries against Oodb, a container that supports a scan () method, and supports predicate query language expressions (predicate query Language). [29] All of the four products are available for download in the evaluation version. The documentation and samples that came with the download package are generally quite complete.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.