home *** CD-ROM | disk | FTP | other *** search
/ ftp.pasteur.org/FAQ/ / ftp-pasteur-org-FAQ.zip / FAQ / object-faq / part7 < prev    next >
Text File  |  1996-04-07  |  52KB  |  1,533 lines

  1. Newsgroups: comp.object,comp.answers,news.answers
  2. Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news.starnet.net!spool.mu.edu!howland.reston.ans.net!vixen.cso.uiuc.edu!uchinews!news
  3. From: Bob Hathaway <rjh@geodesic.com>
  4. Subject: Comp.Object FAQ Version 1.0.9 (04-02) Part 7/13
  5. X-Nntp-Posting-Host: ford.uchicago.edu
  6. Message-ID: <Dp9qHE.Aon@midway.uchicago.edu>
  7. Followup-To: comp.object
  8. Summary: Frequently Asked Questions (FAQ) List and Available Systems For Object-Oriented Technology
  9. Sender: news@midway.uchicago.edu (News Administrator)
  10. Organization: Geodesic Systems
  11. References: <Dp9prv.92t@midway.uchicago.edu>
  12. Date: Wed, 3 Apr 1996 04:15:14 GMT
  13. Approved: news-answers-request@MIT.Edu
  14. Lines: 1516
  15. Xref: senator-bedfellow.mit.edu comp.object:47073 comp.answers:18007 news.answers:68823
  16.  
  17. Archive-name: object-faq/part7
  18. Last-Modified: 04/02/96
  19. Version: 1.0.9
  20.  
  21. Objectivity/DB is resold by Digital Equipment Corporation as DEC Object/DB,
  22. providing a multi-billion-dollar second source vendor.  Over 50,000 end users
  23. are licensed in production use, with applications including real-time
  24. telecommunications, aerospace, defense, case, CAD/CAM, CIM, manufacturing, oil
  25. & gas, process control, transportation, multi-media, case, document management,
  26. financial analysis, and corporate information management.  Platform support
  27. includes all Sun, all DEC (including VMS, alpha, OSF-1), HP/9000 series (both
  28. 68xxx and PA-RISC), IBM RS/6000, NCR 3300, SGI, Windows 3.1, and Windows NT.
  29.  
  30. On Schema Evolution (from original survey):
  31. In the just-released Version 2.0 (shipping Oct 92), schema evolution
  32. is supported via dynamic versioning of type-defining objects [ie.
  33. class versions -- SMC], and via a step-by-step approach that allows
  34. conversion of instance data via user-provided conversion methods.
  35. Also, a full dynamic type manager interface is available for doing
  36. fancier things.
  37.  
  38. Objectivity, Inc.
  39. 301B East Evelyn Avenue
  40. Mountain View, CA  94041-1530
  41. U.S.A.
  42.  
  43. Voice:     (415) 254-7100
  44. Fax:       (415) 254-7171
  45. Toll Free: 1-800-676-6259   1-800-SOS-OBJY
  46.  
  47. Email: info@objy.com
  48. Ftp:   ftp.objy.com
  49. Web:   http://www.objectivity.com
  50.  
  51. Objectivity maintains regional offices in Los Angeles, CA; Burlington,
  52. MA; Iselin, New Jersey.
  53.  
  54. Objectivity-Europe
  55. Beijerscheweg 28a
  56. 2821 NG Stolwijk
  57. The Netherlands
  58.  
  59. Voice: +31 1820 50506
  60. Fax:   +31 1820 12362
  61. Rick ter Horst - horst@objy.com
  62.  
  63. Objectivity - Europe
  64. Socratesstraat 22
  65. 6836 GG ARNHEM
  66. The Netherlands
  67.  
  68. Voice: +31 85 235 907
  69. Fax:   +31 85 235 541
  70. Henk Nijenhuis - henk@objy.com
  71.  
  72. Additional representatives in Ireland, France, Germany Sweden, United
  73. Kingdom, Israel, Italy, Portugal, Switzerland, Taiwan, Japna, Hong Kong
  74.  
  75.  
  76. > ObjectStore
  77.  
  78. Product Description    
  79.  
  80. ObjectStore[TM] is a high performance ODBMS designed for ease of use in
  81. development of sophisticated applications using object-oriented
  82. development techniques.  It offers a tightly-integrated language
  83. interface to a complete set of traditional DBMS features including
  84. persistence, transaction management (concurrency control and
  85. recovery), distributed access, associative queries over large amounts
  86. of data, and database administration utilities.  ObjectStore's data
  87. management facilities combined with popular development tools create a
  88. high productivity development environment for implementing
  89. object-oriented applications.
  90.  
  91. Key Features:
  92.  
  93.    - Transparent interface designed for popular C and C++ programming
  94.      environments. 
  95.  
  96.    - Concurrent access to large amounts of persistent data. 
  97.  
  98.    - Distribution of objects over networks using a variety of popular
  99.      network protocols.
  100.  
  101.    - Access to persistent data at the same speed as transient data.
  102.  
  103.    - Extensible data modeling capabilities for applications requiring
  104.      complex data structures.
  105.  
  106.    - Easy migration path for existing C and C++ applications.
  107.  
  108.    - Class libraries for version and configuration management.
  109.  
  110.    - Class libraries for managing collections of objects.
  111.  
  112.    - A fully distributed (multi-server/multi-database) ad hoc query
  113.      capability.
  114.  
  115.    - An interactive Browser to inspect objects and object
  116.      descriptions.
  117.  
  118.    - Interoperable with ObjectStore servers running on other operating
  119.      systems and hardware environments.
  120.  
  121.    - Complete schema evolution for an application's metadata and
  122.      existing object instances.
  123.  
  124.    - Full online backup for continuous processing environments.
  125.  
  126.    - Meta object protocol with programmatic access to schema
  127.      information. 
  128.  
  129.    - Dynamic Type creation for extending existing class definitions
  130.      during program execution.
  131.  
  132.  
  133. System View
  134.  
  135. ObjectStore supports cooperative access through its flexible
  136. client/server software architecture, which allows users to make the
  137. take advantage of the computational power that exists on the desktop.
  138. ObjectStore's client/server implementation allows one server to
  139. support many client workstations, each workstation to simultaneously
  140. access multiple databases on many servers, and a server to be resident
  141. on the same machine as a client.  ObjectStore's distributed
  142. architecture supports several network environments for
  143. interoperability among popular workstations and PC's and includes
  144. support for TCP/IP, Novell IPX/SPX, other popular network protocols.
  145.  
  146.  
  147. Application Interface
  148.  
  149. Access to ObjectStore is provided through a library based application
  150. interface compatible with popular C and C++ compilers and programming
  151. environments.  The ObjectStore application interface provides support
  152. for C++ compilers -- such as those from workstation suppliers -- and
  153. development environments from independent software vendors such as
  154. Visual C++ from Microsoft, ObjectCenter from CenterLine Software, Inc.
  155. and Energize from Lucid, Inc.  The application interface provides
  156. powerful high-level function calls which enable the programmer to
  157. create multi-user application which share large amounts of data.
  158. These functions include:
  159.  
  160.    - Relationship Management
  161.    - Version Management
  162.    - Collection Management
  163.    - Storage Management
  164.    - Associative Queries
  165.    - Object Iteration
  166.    - Transaction Management 
  167.    - Index Management
  168.    - Clustering
  169.  
  170. Applications developed using ObjectStore library calls are
  171. source-level compatible with ObjectStore applications developed for
  172. other operating systems on other hardware platforms.
  173.  
  174. Platforms
  175.  
  176. ObjectStore is available on the following major platforms:
  177.     
  178. Unix Workstation Platforms
  179.  
  180.    - DEC MIPS Ultrix 
  181.    - HP 700 Series HP-UX
  182.    - HP 800 Series HP-UX 
  183.    - IBM RS/6000 AIX
  184.    - NCR 3000 
  185.    - Olivetti LSX-50xx SVR4
  186.    - Silicon Graphics IRIX 5.x
  187.    - SunSoft Intel Solaris 2
  188.    - SunSoft SPARC Solaris 1 SunOS 4
  189.    - SunSoft SPARC Solaris 2 SunOS 5
  190.    - Univel UnixWare
  191.  
  192. PC Platforms
  193.  
  194.    - Windows 3.1 (Win32s)
  195.    - Windows NT (Intel)
  196.    - OS/2 Release 2.0 and 2.1
  197.    - Novell Netware Release 3.1 and 4.0 (server only)
  198.  
  199. The Company
  200.  
  201.  
  202. Object Design, Inc.
  203. 25 Mall Road
  204. Burlington, MA  01803
  205. U.S.A.
  206.  
  207. Voice: 1-800-962-9620
  208.        (617) 674-5179
  209.        (617) 674-5000
  210. Fax:   (617) 674-5010
  211.  
  212. Email: info@odi.com
  213. Web:   http://www.odi.com
  214. Ftp:   ftp.odi.com
  215.  
  216.  
  217. Offices in Asia Pacific, Europe and throughout the U.S..  Full contact
  218. information available through their web page.
  219.  
  220. The German user group (OS_UG) has a web site:
  221. http://www.informatik.th-darmstadt.de/OS_UG
  222.  
  223.  
  224. > ONTOS [formerly VBase] (Now ONTOS, Inc. formerly Ontologic)
  225.  
  226. Entry on schema evolution only:
  227.  
  228. *Ontos provides schema evolution. It allows any class to be modified.
  229. *The major drawback is that data does not migrate ie., instances are
  230. *not modified to adopt to the new class definition. So schema changes
  231. *can be done only on classes that do not contain instances and do not
  232. *have sub classes that contain instances.
  233. *[h.subramanian@trl.OZ.AU]
  234.  
  235. *As a system for experiments, we are currently using ONTOS from
  236. *Ontologic Inc.  Unfortunately, there is no transparent concept of
  237. *schema evolution for populated database. Thus, we still investigate
  238. *how it works.
  239.  
  240.  
  241. ONTOS, Inc. provides object-oriented products and services that enable
  242. users to integrate, distribute, and manage information across the
  243. enterprise.
  244.  
  245. Product Overview:  The ONTOS Virtual Information Architecture (ONTOS VIA)
  246. is a strategy for integrating an organization's disparate information
  247. resources.  It includes a set of products for developing and deploying
  248. distributed, network-based applications and for accessing information
  249. stored in a variety of formats.  ONTOS VIA allows organizations to take
  250. advantage of new technologies while preserving existing technology
  251. investments.
  252.  
  253. The products that make up ONTOS VIA include ONTOS DB, a fully distributed
  254. Component Object Database and ONTOS Object Integration Server (ONTOS
  255. OIS), which provides object access to relational and mainframe databases.
  256. ONTOS products are available on UNIX and Microsoft operating environments.
  257.  
  258. ONTOS, Inc.
  259. 900 Chelmsford St.
  260. Lowell, MA  01851
  261. U.S.A.
  262.  
  263. Voice: (508) 323-8000
  264. Fax:   (503) 323-8101
  265. Email: info@ontos.com
  266.        support@ontos.com
  267.        Web:   http://www.ontos.com
  268.  
  269.  
  270. > Odapter/OpenODB (Hewlett-Packard)
  271.  
  272. Odapter is HP's new object/relational adapter which
  273. enables object-oriented developers to share a common
  274. object model stored in the ORACLE7 relational database
  275. management system (RDBMS).  Odapter is also available with
  276. HP's ALLBASE/SQL RDBMS.  The combination of Odapter
  277. and ALLBASE/SQL is called OpenODB.
  278.  
  279. Odapter 
  280. Technical Data 
  281. Object/Relational Adapter 
  282.   
  283. A Productivity Tool for Scalable Object-Oriented 
  284. Applications 
  285.   
  286. Odapter is a tool for developers writing scalable 
  287. object-oriented applications requiring the 
  288. integration of new objects and legacy information. 
  289. Odapter is valuable because it: 
  290. * accelerates application development 
  291. * reduces the cost of keeping applications current 
  292. * enables applications to scale 
  293.   
  294. Odapter delivers the productivity of object 
  295. technology while adhering to your data management 
  296. standards. 
  297.   
  298. Consider Odapter if you need to be able to do one 
  299. or more of the following: 
  300. * develop object-oriented applications and 
  301. store objects in a relational database 
  302. * easily access legacy data and existing 
  303. applications from your new system 
  304. * support a large number of end-users who will 
  305. be simultaneously accessing information 
  306. * store large amounts of  complex information 
  307.   
  308. The following are examples of applications well- 
  309. suited for Odapter: 
  310. * a customer billing application written in 
  311. Smalltalk combining data stored in DB2 with new 
  312. objects. (Telecommunications) 
  313. * a network management application written in C 
  314. using Odapter as the object manager, able to scale 
  315. to millions of objects (Manufacturing) 
  316. * a complex Oil and Gas industry standard model 
  317. automatically generated from an Express analysis 
  318. and design tool. 
  319. (Oil & Gas) 
  320. * a medical application using Odapter to 
  321. combine heterogeneous components of patient 
  322. records. (Healthcare) 
  323.   
  324. Odapter provides authorized access to sharable 
  325. objects, including existing data and business 
  326. processes. By bringing object-oriented capabilities 
  327. to heterogeneous systems environments, Odapter 
  328. delivers increased functionality while leveraging 
  329. the stability of existing RDBMSs and legacy 
  330. information. 
  331.   
  332. Odapter Object Model 
  333.   
  334. The Odapter object model is based on three key 
  335. concepts - objects, types and functions. 
  336. * Objects are a combination of data and 
  337. behavior (functions). Figure 2 is an example of an 
  338. object. 
  339. * Types are dynamic templates allowing you to 
  340. group together similar components or objects. 
  341. * Functions define the attributes, 
  342. relationships and behavior of objects. Odapter 
  343. supports four types of user-defined functions: 
  344.   
  345. Stored functions define attributes and 
  346. relationships that are stored in the database. In 
  347. Figure 2, flightno is a stored function. The 
  348. functions aircraft and crew are also stored 
  349. functions with user-defined results. 
  350.   
  351. SQL-based functions allow you to access existing 
  352. relational tables with Odapter's object-oriented 
  353. model. In Figure 2, citypair is an SQL-based 
  354. function accessing values from an existing 
  355. relational table. 
  356.   
  357. OSQL-based functions define attributes and 
  358. relationships that are derived or calculated with 
  359. OSQL statements. In Figure 2, delay and depart are 
  360. OSQL-based functions. Delay calculates changes in 
  361. arrival and departure times based upon events that 
  362. disrupt the schedule; depart handles the update of 
  363. functions related to departure and transitions the 
  364. flight from OnGround to InAir. 
  365.   
  366. External functions are a reference to code or data 
  367. stored outside of Odapter. In Figure 2, cancel is 
  368. an external function that executes code outside of 
  369. Odapter to free up resources no longer assigned to 
  370. the flight. 
  371.   
  372. Odapter Language 
  373.   
  374. The Odapter language can be combined with functions 
  375. implemented in C++, Smalltalk or C. You create and 
  376. manipulate objects, types and functions using 
  377. Odapter's object-oriented structured query language 
  378. (OSQL). OSQL is a functional language that is a 
  379. semantic superset of SQL, the structured query 
  380. language for relational databases. OSQL is a 
  381. computationally complete language with statements 
  382. allowing you to define and manipulate information 
  383. in your Odapter enhanced relational database, 
  384. specify authorization for individuals or groups, 
  385. define transactions, embed program logic within 
  386. functions, and administer the database. 
  387.   
  388. OSQL includes programming flow statements, such as 
  389. IF/THEN/ELSE, FOR and WHILE. This procedural 
  390. language allows Odapter functions to model complex 
  391. behavior, simplifying your application code. By 
  392. decoupling behavior from the applications, multiple 
  393. applications can share information with benefits 
  394. such as consistency, security and integrity. See 
  395. Table 5 for a list of all OSQL statements. 
  396.   
  397. Odapter Object Storage 
  398.   
  399. Odapter objects are stored in the developer's 
  400. choice of relational databases. Odapter interfaces 
  401. to the underlying RDBMS through an SQL command 
  402. interface. Currently, developers can choose to 
  403. store their objects in ORACLE7 or HP ALLBASE/SQL. 
  404.   
  405. The choice of RDBMS is made when a particular 
  406. database is created. The users are only limited by 
  407. the number of Odapter concurrent user licenses 
  408. purchased. This flexibility allows database 
  409. administrators to continue using their existing 
  410. administration procedures and keeps the group from 
  411. having to choose yet another database management 
  412. system. 
  413.   
  414. During the initial development of an application, 
  415. developers can make rapid progress without 
  416. knowledge of the underlying relational database. 
  417. Optimization of the objects and how they are stored 
  418. in the underlying relational database is best 
  419. done during the deployment phase. 
  420.   
  421. Odapter Development Environments 
  422.   
  423. Odapter developers have a choice of development 
  424. environments. Whether Smalltalk, C++ or more 
  425. traditional C and C-linkable languages are used, 
  426. Odapter enables object storage in a scalable and 
  427. robust relational database. In fact, objects can be 
  428. shared between different applications, allowing 
  429. different projects to employ the best tools for the 
  430. job! 
  431.   
  432. Odapter and Smalltalk 
  433.   
  434. Odapter provides Smalltalk developers with 
  435. transparent access to information stored in the 
  436. underlying relational database. 
  437.   
  438. Odapter's Smalltalk Class Builder utility 
  439. automatically generates ParcPlace Smalltalk 
  440. compatible classes and methods based upon an 
  441. Odapter object model. The developer can select 
  442. specific Odapter types and functions, resulting in 
  443. a corresponding set of Smalltalk classes and 
  444. methods. Once the Smalltalk schema is generated, 
  445. the Smalltalk developer can transparently access 
  446. the underlying relational database, as shown in 
  447. Figure 3. 
  448.   
  449. printFlight 
  450.    |allFlightObjects| 
  451.    allFlightObject:=Flight allObjects. 
  452.    AllFlightObjects do: [:aFlight| 
  453.       Transcript show :aFlight flightno value; cr]. 
  454. Figure 3 
  455.   
  456.   
  457. Figure 3 shows how to access the flight objects 
  458. shown in Figure 2 through Smalltalk. This example 
  459. retrieves all flight object identifiers and prints 
  460. the flight# for each one of the flight objects. 
  461.   
  462. All Smalltalk classes and methods which result in 
  463. the access of Odapter structures are italicized. 
  464. Flight is a Smalltalk class that corresponds to the 
  465. Odapter type Flight. The Smalltalk methods 
  466. allObjects and flightno map to Odapter calls that 
  467. access data from the relational database storage 
  468. manager. 
  469.   
  470. Odapter and C++ 
  471.   
  472. For C++ developers, once the corresponding C++ 
  473. model is created, Odapter provides the abilility to 
  474. manage C++ objects stored in the underlying 
  475. relational database, as shown in Figure 4. 
  476.   
  477. void printFlight() 
  478.    int i; 
  479.    ODBType Flight ("Flight"); 
  480.    ODBBag allFlights=Flight.allObjects(); 
  481.    ODBFunc flightno("flighno"); 
  482.   
  483.    for(i=0;i<allFlights.size();i++){ 
  484.       cout<<flightno(allFlights[i]); 
  485.    } 
  486. Figure 4 
  487.   
  488. Figure 4 shows a C++ version of the Smalltalk 
  489. example in Figure 3. That is, Figure 4 shows how to 
  490. access all the flight objects shown in Figure 2 and 
  491. prints the flight number associated with each 
  492. flight object. 
  493.   
  494. The Odapter C++ library includes a set of classes 
  495. (e.g. ODBType, ODBClass, ODBFunc, ODBBag) and 
  496. corresponding member functions (e.g. allObjects). 
  497. User-defined classes (Flight) and member functions 
  498. (flightno) are also shown. In Figure 4, all Odapter 
  499. calls are in italics. 
  500.   
  501. Odapter and C-linkable Languages 
  502.   
  503. For traditional developers using C, or any 
  504. languages linkable with C, the object-oriented 
  505. features are provided by Odapter. Odapter objects 
  506. are manipulated by embedding OSQL statements in the 
  507. C program, similar to the db.execosql call shown in 
  508. Figure 4. In addition, the C interface requires the 
  509. conversion of data types from Odapter to C. 
  510.   
  511. By embedding Odapter calls in a C program, the C 
  512. language becomes object-oriented. 
  513.   
  514. Features and Benefits 
  515.   
  516. Accelerates Application Development 
  517.   
  518. Odapter accelerates application development by 
  519. integrating with familiar development environments 
  520. and by providing a robust object-oriented model. 
  521.   
  522. Odapter's choice of development environments 
  523. includes those which support the Smalltalk, C++ and 
  524. C languages. 
  525.   
  526. Odapter's robust object model enables the 
  527. integration of legacy data and business processes 
  528. in the context of one sharable business object 
  529. model, shielding the developer from the data 
  530. storage complexity. 
  531.   
  532. The following Odapter features accelerate 
  533. application development: 
  534.   
  535. Automatic mapping of objects to relational 
  536. databases 
  537. The application developer is shielded from the task 
  538. of converting complex object models to two 
  539. dimensional relational tables. 
  540.   
  541. Smalltalk Class Builder 
  542. Once an OSQL schema is created, whether using 
  543. available analysis and design tools or manually, 
  544. Odapter's Smalltalk Class Builder can generate 
  545. corresponding Smalltalk classes and methods. The 
  546. developer can select the relevent part of the 
  547. Odapter schema to generate. As the Odapter object 
  548. model changes, developers can also incrementally 
  549. update the Smalltalk classes. 
  550.   
  551. Object Identity 
  552. Each object manipulated by Odapter has a unique, 
  553. system-provided handle called an object identifier 
  554. (OID). OIDs eliminate the need for creating unique 
  555. keys to identify stored information. Additionally, 
  556. OIDs reduce duplication of information when several 
  557. attributes would be needed to uniquely identify 
  558. information in the database. OIDs are also a 
  559. powerful way to tune data access and performance. 
  560.   
  561. Inheritance 
  562. Odapter objects can use functions defined on parent 
  563. types in the type hierarchy. For example, as shown 
  564. in Figure 5, a subtype of Employee called Pilot 
  565. could inherit functions from Employee like hire and 
  566. name, while defining unique functions like 
  567. hoursflown and status. 
  568.   
  569.   
  570. Multiple Inheritance 
  571. Functions defined on a type can be inherited by one 
  572. or more subtypes. In Figure 5, functions accessible 
  573. by the type ManagingPilot are inherited from its 
  574. parents, namely all functions defined on Employee, 
  575. Pilot and Manager. By inheriting rather than 
  576. redefining functions, you can easily add 
  577. functionality to your application. 
  578.   
  579. OSQL 
  580. If you already know SQL, you can quickly be 
  581. productive using Odapter's OSQL. Both query 
  582. languages are set-based, that is they retrieve sets 
  583. of information based upon queries. Thus, OSQL does 
  584. not require users to navigate through the database 
  585. chasing pointers or object references. 
  586.   
  587. Encapsulation 
  588. Odapter protects end-user applications from changes 
  589. to the internal definition of objects. Since 
  590. Odapter only allows access to data through 
  591. functions with well defined arguments and results, 
  592. your applications are protected from changes to the 
  593. function body and you have control over how 
  594. information is used. 
  595.   
  596. Aggregate Types 
  597. Aggregates are used to represent collections, such 
  598. as crew members (maybe several pilots, flight 
  599. attendants and a mechanic) for a particular flight, 
  600. or the employees reporting to a particular manager. 
  601. Aggregates are not required to have a predetermined 
  602. size. Odapter manages the memory associated with 
  603. aggregates, relieving your application of this 
  604. work. 
  605.   
  606. User-defined Data Types 
  607. You can construct user-defined data types in 
  608. Odapter, such as a type called Flight, Employee or 
  609. Aircraft, as shown in Figure 6. Functions defined 
  610. on these types can manipulate data stored within 
  611. the current object, within other related objects or 
  612. outside of Odapter. User-defined types maximize 
  613. flexibility and lead to more manageable, clearer 
  614. code. 
  615.   
  616. Complex Objects 
  617. With Odapter you can construct complex objects from 
  618. simpler objects. For example, Figure 6 shows the 
  619. relationships between the types Flight, Aircraft 
  620. and Employee.  Complex objects relieve applications 
  621. from managing such relationships. 
  622.   
  623.   
  624. Reduces the Cost of Keeping Applications Current 
  625.   
  626. Odapter supports a server-centric business model 
  627. which means the business logic and associated data 
  628. is sharable by multiple applications. By separating 
  629. out business objects (data and processes), from the 
  630. application development environment, your company's 
  631. business can be modified without impacting the 
  632. applications. These changes can be immediately 
  633. leveraged by the calling applications without 
  634. recompilation 
  635.   
  636. The following features make applications easier to 
  637. keep current: 
  638.   
  639. External Functions 
  640. Using external functions, you can access 
  641. distributed data and code stored outside of the 
  642. relational database used by Odapter for storage, 
  643. regardless of location or data format. Examples of 
  644. external data sources include IMS, DB2 as well as 
  645. custom databases and flat files. Odapter acts as an 
  646. integrator so your application can manipulate 
  647. information as recognizable business objects. This 
  648. not only allows transparent migration of data over 
  649. time, it accelerates developer productivity by 
  650. hiding the complexity of a diverse data storage 
  651. environment. 
  652.   
  653. Overloaded Functions 
  654. Multiple functions can have the same name with 
  655. different implementations. An application calls a 
  656. function (e.g. salary) and Odapter determines at 
  657. run-time which code (salary for Manager or salary 
  658. for Pilot) to execute, based upon the type of the 
  659. object against which the function is invoked. The 
  660. application is simplified since the conditional 
  661. logic for determining which function to execute is 
  662. now in Odapter. 
  663.   
  664. Dynamic Schema Modification 
  665. Odapter object models can be modified while the 
  666. database is running. Developers can add new 
  667. functions and types, as well as change the 
  668. implementation of functions. This capability is 
  669. particularly valuable to applications with high 
  670. availability requirements. 
  671.   
  672. Dynamic Typing 
  673. You can change the type of an object without 
  674. destroying and recreating the object. An object can 
  675. also belong to more than one type. As shown in 
  676. Figure 7, once a Flight leaves the ground, it would 
  677. change state from being an OnGround to an InAir 
  678. Flight. OnGround functions such as maintenancecrew 
  679. and availableseats would no longer be needed. An 
  680. InAir object would need certain functions like 
  681. bestroute and delay to calculate the most time 
  682. efficient route and to calculate a projected delay 
  683. based current weather conditions. Dynamic Typing 
  684. allows you to represent an object in Odapter which 
  685. transforms itself over time and, therefore, changes 
  686. capabilities and attributes. 
  687.   
  688. Late Binding 
  689. Odapter supports functions that are resolved at 
  690. runtime. Late binding allows you more flexibility 
  691. in application development and gives you the full 
  692. power of overloaded functions as described earlier. 
  693. On the other hand, Odapter will precompile or do 
  694. early binding to improve performance. However, when 
  695. types and functions changes at runtime, impacting a 
  696. particular function, late binding occurs and the 
  697. application automatically takes advantage of the 
  698. new implementation of the function when it is 
  699. called. 
  700.   
  701. Referential Integrity 
  702. Since Odapter manages the relationships between 
  703. objects, it can manage referential integrity on 
  704. your behalf. That is, if an object referenced by 
  705. other objects is deleted, the system removes all 
  706. dependencies.  Your application code is simplified 
  707. since Odapter is able to keep the logical business 
  708. model intact automatically. 
  709.   
  710. Multimedia 
  711. Odapter allows you to manage large, unformatted 
  712. data in binary format and treat that data as an 
  713. attribute of an object. For example, you may want 
  714. to create a function called diagram to show the 
  715. sections and seating for an Aircraft object. 
  716. Multimedia information can include graphics, images 
  717. and voice. You can also define functions in Odapter 
  718. to manipulate this multimedia information. For 
  719. example, you can create a function called showexits 
  720. that adds information to the diagram. Thus, various 
  721. applications can share these complex functions. 
  722.   
  723. Import Facility 
  724. The Odapter Import facility allows developers to 
  725. update existing Odapter functions with data from 
  726. external files such as spreadsheets or other 
  727. databases. This is an object-oriented version of 
  728. the relational "bulk load" functionality. 
  729.   
  730. Enables Applications to Scale 
  731.   
  732. Odapter makes applications more scalable by storing 
  733. objects in a choice of RDBMSs, like ORACLE7. As a 
  734. result, applications can access large volumes of 
  735. data, be used by a large numbers of users, and 
  736. perform on-line backup. In addition, Odapter 
  737. protects against unauthorized access from users in 
  738. a distributed environment. 
  739.   
  740. Odapter, with the help of the underlying relational 
  741. storage manager, ensures the integrity and security 
  742. of your data while maximizing the availability of 
  743. that data for end users. 
  744.   
  745. The following features enable applications to 
  746. scale: 
  747.   
  748. Indexing 
  749. Indexes are automatically generated when you create 
  750. types and functions in Odapter. You can also define 
  751. your own indexes using B-tree and hashing 
  752. algorithms. Indexes make end user access to 
  753. information faster. 
  754.   
  755. Clustering 
  756. Related functions and objects which have the same 
  757. value for a function can be stored close to each 
  758. other. This ability to influence how objects are 
  759. stored allows you to tune the performance of the 
  760. database based on how the information will be 
  761. accessed by applications. 
  762.   
  763. Transaction Management 
  764. Odapter ensures the logical and physical integrity 
  765. of your database by giving you complete control 
  766. over the unit of work to be performed within a 
  767. single transaction. With this control, you can save 
  768. or rollback a transaction (throw away temporary 
  769. work) at your discretion. Savepoints are also 
  770. supported so that you can rollback parts of a 
  771. transaction. 
  772.   
  773. Multi-user Concurrency Control 
  774. Odapter is designed to support hundreds of users 
  775. accessing the same information while guaranteeing 
  776. the integrity of that information. 
  777.   
  778. Authorization 
  779. You can control access to an Odapter enhanced 
  780. database at the database and function levels based 
  781. on individuals or groups of users. For example, 
  782. authorization statements can provide read access to 
  783. a large group of users while limiting write or 
  784. delete access. 
  785.   
  786. High Availability 
  787. Because Odapter actually stores objects in an 
  788. RDBMS, Odapter can leverage RDBMS features to 
  789. maximize the availability of your information by 
  790. providing: 
  791. * on-line backup of the database, to backup the 
  792. database while it is being accessed 
  793. * dual logging, to ensure the integrity of your 
  794. log file 
  795. * switch log, to automatically switch to a 
  796. second log file if the original log file becomes 
  797. full 
  798. * dynamic file expansion, to expand the size of 
  799. your database as it becomes full 
  800.   
  801. Odapter will also take advantage of other available 
  802. features of the underlying relational database 
  803. management system such as replication or "warm 
  804. standby". 
  805.   
  806. Recovery 
  807. Odapter uses the robust logging and recovery 
  808. facilities of the RDBMS. In case of a failure, you 
  809. can rollback work or perform rollforward recovery 
  810. to a particular time, using the log file to 
  811. recreate saved work. 
  812.   
  813. Odapter  Software Components 
  814.   
  815. Odapter uses a client/server architecture, enabling 
  816. you to efficiently utilize your computing power. 
  817. Clients use the object application call interface 
  818. (OACI) to communicate with the server over the 
  819. network. The clients and server components can also 
  820. reside on the same machine. 
  821.   
  822. Odapter is bundled with the following client and 
  823. server components, as shown in Figure 8: 
  824.   
  825. Client Components 
  826.   
  827. * Interactive Object-Oriented SQL (IOSQL) 
  828. This interface allows you to interactively enter 
  829. all Object-oriented SQL (OSQL) statements, 
  830. facilitating rapid prototyping and testing. IOSQL 
  831. provides query, administration and editing 
  832. capabilities. 
  833.   
  834. * Graphical Browser (GOSQL) 
  835. The Graphical Browser is a tool that allows you to 
  836. graphically explore your database schema and 
  837. contents, and execute any OSQL statement. This tool 
  838. is designed to assist application developers by 
  839. making it easier to view and manipulate your object 
  840. model stored in Odapter. 
  841.   
  842. * Windows OSQL (WINOSQL) 
  843. This PC-based interactive interface to OSQL allows 
  844. you to interactively enter all OSQL statements. 
  845.   
  846. * Object Application Call Interfaces (OACI) 
  847. Odapter provides client interface libraries for the 
  848. Smalltalk and C++ object-oriented programming 
  849. languages, allowing these languages to be tightly 
  850. coupled with Odapter. 
  851.   
  852. You can also write Odapter applications using any 
  853. programming language that can be linked with C 
  854. (such as Ada, COBOL, FORTRAN and Pascal). The 
  855. programmatic interface is similar to a "Dynamic 
  856. SQL" interface, and passes strings representing 
  857. OSQL statements to the Odapter server. No 
  858. preprocessors are required. 
  859.   
  860. Server Components 
  861.   
  862. * Odapter Object Manager 
  863. The Object Manager executes OSQL calls made by the 
  864. Odapter clients. The Object Manager processes 
  865. requests, and accesses data and code stored in the 
  866. Odapter enhanced relational data storage manager or 
  867. passes the request to a subsystem outside of 
  868. Odapter using Odapter External Functions. 
  869.   
  870. * External Functions 
  871. External functions allow you to access data and 
  872. code stored outside of Odapter, regardless of data 
  873. format or location. External functions can 
  874. automatically link to specific data sources using 
  875. the Odapter EDA-Objects class library and the 
  876. EDA/SQL product from Information Builder's, Inc. 
  877. (IBI). External functions can also be implemented 
  878. by you as subroutines written in general-purpose 
  879. programming languages and compiled outside of 
  880. Odapter. External functions can be called by any 
  881. OSQL statement, allowing you to manipulate this 
  882. remote data and application code like any other 
  883. Odapter object. For example, Figure 9 shows how 
  884. Odapter integrates diverse heterogeneous 
  885. information in an Oil and Gas environment. 
  886.   
  887. * EDA-Objects 
  888. HP and IBI have jointly developed an external 
  889. function library called EDA-Objects. Coupled with 
  890. IBI's EDA/SQL product, EDA-Objects provides 
  891. connections to over 50 commonly used databases on 
  892. 35 different platforms. The external function 
  893. library to connect to EDA/SQL is shipped with 
  894. Odapter; however, you must purchase other EDA/SQL 
  895. components from IBI directly to use the product. 
  896. EDA-Objects is one way to integrate external data 
  897. from multiple servers into a single business model 
  898. managed by Odapter. This is done without physically 
  899. moving the data or changing the applications which 
  900. are dependent on the data in its current form. 
  901.   
  902. Additional Products 
  903.   
  904. * Development Environments and Tools 
  905. Odapter allows you to use your favorite development 
  906. environments for application development. Some 
  907. tools are more tightly coupled with Odapter than 
  908. others. HP has recruited tools partners to address 
  909. all aspects of application development including 
  910. application design and analysis, data model 
  911. manipulation, fourth generation language 
  912. application development, report writing and legacy 
  913. data access. 
  914.   
  915. * Relational Database 
  916. Odapter uses a relational database as its storage 
  917. manager for the storage of Odapter objects. The 
  918. relational database performs physical file 
  919. management and database functions such as multi- 
  920. user concurrency, transaction management, and 
  921. recovery. The relational database allows you to 
  922. perform on-line backup and recovery, manage 
  923. physical distribution of files, maximize 
  924. availability and change database parameters. 
  925.   
  926. * COMPASS 
  927. COMPASS is a consulting product which includes the 
  928. Hewlett-Packard implementation of the 
  929. Petrotechnical Open Software Corporation (POSC) 
  930. Software Integration Platform (SIP) specification. 
  931. The SIP specification defines a data model and an 
  932. interface which allow users and applications to 
  933. access exploration and production data, independent 
  934. of the database engine technology. 
  935.   
  936. The COMPASS package is an add-on to Odapter and 
  937. includes: 
  938. * COMPASS specific consulting/training (1 day) 
  939. * POSC-based DAE interface library and documentation 
  940. * Interactive user interface called ixpres 
  941. * Archived copy of a pre-loaded Odapter 
  942. enhanced database with sample reference data 
  943. * Scripts for building a POSC-based Odapter 
  944. enhanced database 
  945. * Contributed software library (data loaders, 
  946. demonstration programs) 
  947.   
  948. COMPASS gives developers a 'jump start' on building 
  949. applications focused on petroleum exploration and 
  950. production. Other industries will find COMPASS an 
  951. inexpensive and useful approach for building 
  952. geographic information systems (GIS) and other 
  953. applications which can re-use of the cartography 
  954. (mapmaking) and geometric objects defined in the 
  955. model. 
  956.   
  957. POSC is a not-for profit organization created to 
  958. lower the costs associated with accessing and 
  959. integrating exploration and production data for the 
  960. oil and gas industry. 
  961.   
  962. System Environment 
  963.   
  964. Hardware       Operating    Memory      Disk Space 
  965. platform       System       (minimum)   (minimum)* 
  966.   
  967. HP 9000 S700   HP-UX 8.07   32MB        10MB + 
  968. S800           or later                 necessary 
  969.                                         swap space 
  970.   
  971. Sun            Solaris 1.0  32MB        10MB + 
  972.                (SunOS 4.3);             necessary 
  973.                Solaris 2.0              swap space 
  974.                (SunOS 5.2) 
  975.   
  976. IBM RS/6000    AIX 3.2.5    32MB        10MB + 
  977.                                         necessary 
  978.                                         swap space 
  979.   
  980. X Terminal                  6MB         none 
  981.   
  982. IBM PC         DOS 5.0,     4MB         1MB 
  983. compatible     MS-Windows 
  984.                3.1 or later 
  985. Table 1:  Odapter Client Environments 
  986.   
  987. * Swap space needed will depend on the complexity 
  988. of the application and the number of concurrent 
  989. users. Swap space will significantly increase the 
  990. necessary disc space. 
  991.   
  992. Hardware       Operating    Memory      Disk Space 
  993. platform       System       (minimum)   (minimum)* 
  994.   
  995. HP 9000 S700   HP-UX 9.0    64MB        15MB + 
  996. S800           or later                 necessary 
  997.                                         swap space 
  998. Table 2:  Odapter Server Environment 
  999.   
  1000. * Additional memory may be required. Swap space 
  1001. will significantly increase the necessary disc 
  1002. space. The amount of memory and swap space depends 
  1003. on the complexity of the application and the number 
  1004. of concurrent users. 
  1005.   
  1006. Odapter Software Requirements 
  1007.   
  1008. To use Odapter, you will need one of the RDBMSs 
  1009. listed below, TCP/IP transport and ARPA Berkeley 
  1010. Services (for Unix systems), HP LAN Manager or 
  1011. Microsoft LAN Manager (for the PC client) software. 
  1012. To use the Odapter Graphical Browser, you will need 
  1013. X11 X-Window support. 
  1014.   
  1015. Table 3: Relational Databases 
  1016.   
  1017.             Version          Memory      Disk Space 
  1018.                              (minimum)   (minimum) 
  1019.   
  1020. ORACLE7     7.0.13 or later  refer to    refer to 
  1021.             with "procedural Oracle      Oracle 
  1022.             option" (PL/     manuals     manuals 
  1023.             SQL), Pro*C, 
  1024.             SQL*Plus & Oracle 
  1025.             common libraries and 
  1026.             utilities 
  1027.   
  1028. ALLBASE/SQL shipped with     64MB A/SQL  10MB 
  1029.             OpenODB          and Odapter 
  1030.   
  1031. * ALLBASE/SQL is included with the Odapter 
  1032. software. The combination of Odapter and 
  1033. ALLBASE/SQL is known as OpenODB. 
  1034.   
  1035.   
  1036. Ordering Information 
  1037.   
  1038. Software, training, consulting and support can be 
  1039. purchased separately, as well as in bundles. 
  1040. Pricing for the stand-alone software is based on 
  1041. the number of user processes accessing a single 
  1042. database server at the same time. Any number of 
  1043. user licenses can be ordered. You must also order 
  1044. the Odapter Media & Manuals product when ordering 
  1045. the Developer's Bundle or the Concurrent User 
  1046. License. HP standard support options are available 
  1047. for all Odapter license and media products. 
  1048. The OpenODB and Odapter products are sold together. 
  1049. OpenODB is the combination of Odapter and 
  1050. ALLBASE/SQL. You are only limited by the number of 
  1051. concurrent licenses purchased for Odapter. 
  1052.   
  1053. Product Number and Product Description 
  1054.   
  1055. B3767BB  Odapter/OpenODB Concurrent User License 
  1056. Software license only. Must order B3768BA to 
  1057. receive software and manuals. Must specify number 
  1058. of users. 
  1059.   
  1060. B3768BA  Odapter/OpenODB Media and Manuals  Must 
  1061. choose media option. Includes software and one set 
  1062. of manuals. Requires prior or concurrent purchase 
  1063. of software license. 
  1064.   
  1065. B2470BA  Odapter/OpenODB Developer's Bundle 
  1066. Includes 8 user software license, 5 days of on- 
  1067. your-site consulting, one year of on-line support 
  1068. and 2 passes to the Odapter/OpenODB Training Class. 
  1069. Must order B3768BA to receive software and manuals. 
  1070.   
  1071. B3179A  Odapter/OpenODB Evaluator's Bundle 
  1072. Includes a 40 user software license for 3 months, 
  1073. media, documentation, 3 months of on-line support, 
  1074. and 1 pass to the Odapter/OpenODB Training Class. 
  1075.   
  1076. B3184S  Odapter/OpenODB Training Class (5 days) 
  1077.   
  1078. B3185A  Odapter/OpenODB Reference Manuals  Includes 
  1079. the Odapter/OpenODB Reference Manual and the 
  1080. Odapter/OpenODB System Functions Manual. 
  1081.   
  1082. B3186A  Odapter/OpenODB Consulting  Customized 
  1083. consulting in any of the following areas: COMPASS, 
  1084. object-oriented analysis and design, schema design 
  1085. and review, authorization/security design and 
  1086. review, performance tuning, advanced usage, 
  1087. Odapter/OpenODB application development planning 
  1088. and review and implementation of access to legacy 
  1089. data sources. 
  1090.   
  1091. To order these products, please contact your local 
  1092. HP sales representative or one of the offices on 
  1093. the back page of this document. 
  1094.   
  1095. Table 5. Odapter Features 
  1096.   
  1097. OBJECT-ORIENTED FEATURES 
  1098. Aggregates (BAG, LIST, SET, TUPLE) 
  1099. Complex Objects 
  1100. Dynamic Schema Modification 
  1101. Dynamic Typing 
  1102. Encapsulation 
  1103. External Functions 
  1104. Functions (Stored Code or Methods) 
  1105. Late Binding 
  1106. Multiple Inheritance 
  1107. Object Identity (OID) 
  1108. Overloaded Functions 
  1109. Type (Class) Hierarchy 
  1110. User-defined Data Types 
  1111. Versioning Primitives 
  1112.   
  1113. CLASS LIBRARIES 
  1114. C++ 
  1115. EDA-Objects 
  1116. Smalltalk 
  1117. Softbench 
  1118.   
  1119. CLIENT INTERFACES 
  1120. Graphical Browser (GOSQL) 
  1121. Import 
  1122. Interactive OSQL 
  1123. Object Application Call Interfaces (OACI): 
  1124.   C++ 
  1125.   SmallTalk 
  1126.   C-linkable languages  (Ada, COBOL, FORTRAN, 
  1127. Pascal) 
  1128. Smalltalk Class Builder 
  1129. Windows OSQL 
  1130.   
  1131. OSQL STATEMENTS 
  1132. Add/Remove Type To/From Object 
  1133. Add/Remove User 
  1134. Begin/Commit/Rollback Work 
  1135. Call Function 
  1136. Change Owner 
  1137. Change Password 
  1138. Connect/Disconnect 
  1139. Create/Delete Function 
  1140. Create/Delete Index 
  1141. Create/Delete Object 
  1142. Create/Delete Type 
  1143. Create/Delete User/Group 
  1144. Declare/Delete variables 
  1145. Grant/Revoke 
  1146. If/Then/Else, While, For 
  1147. Implement/Modify Function 
  1148. Open/Fetch/Close Cursor 
  1149. Raise Error 
  1150. Security On/Off 
  1151. Savepoint 
  1152. Select 
  1153. Store 
  1154. Update 
  1155.   
  1156. PRIMITIVE DATA TYPES 
  1157. Binary 
  1158. Boolean 
  1159. Character 
  1160. Date 
  1161. Datetime 
  1162. Decimal 
  1163. Floating Point 
  1164. Integer 
  1165. Interval 
  1166. Small Integer 
  1167. Time 
  1168.   
  1169. Sales Offices 
  1170. For more information, call you local sales office 
  1171. listed in your telephone directory or an HP 
  1172. regional office listed below for the location of 
  1173. your nearest sales office. 
  1174.   
  1175. United States: 
  1176. 1-800-637-7740, extension 8521 
  1177.   
  1178. Canada: 
  1179. Hewlett-Packard Ltd. 
  1180. 6877 Goreway Drive 
  1181. Mississauga, Ontario L4V 1M8 
  1182. (416) 678-9430 
  1183.   
  1184. Japan: 
  1185. Yokogawa-Hewlett-Packard Ltd. 
  1186. 15-7, Nishi Shinjuku 4 Chome 
  1187. Shinjuku-ku 
  1188. Tokyo 160, Japan 
  1189. (03) 5371-1351 
  1190.   
  1191. Latin America: 
  1192. Hewlett-Packard 
  1193. Latin American Region 
  1194. Headquarters 
  1195. 5200 Blue Lagoon 
  1196. Suite 950 
  1197. Miami, FL 33126 
  1198. (305) 267-4220 
  1199.   
  1200. Australia New Zealand: 
  1201. Hewlett-Packard Australia Ltd. 
  1202. 31-41 Joseph Street 
  1203. Blackburn, Victoria 3130 
  1204. Australia (A.C.N. 004 394 763) 
  1205. (03) 895 2805 
  1206.   
  1207. Asia Pacific: 
  1208. Hewlett-Packard Asia Ltd. 
  1209. 22/F Bond Centre, West Tower 
  1210. 89 Queensway 
  1211. Central, Hong Kong 
  1212. (852) 848-7777 
  1213.   
  1214. Europe/Africa/Middle East: 
  1215. Hewlett-Packard S.A. 
  1216. 150, Route du Nant-d'Avril 
  1217. CH-1217 Meyrin 2 
  1218. Geneva, Switzerland 
  1219. (22) 780 81 11 
  1220.   
  1221. Technical information in this document is subject 
  1222. to change without notice. 
  1223. All brand and product names appearing herewith are 
  1224. registered trademarks or trademarks of their 
  1225. respective holders. 
  1226.   
  1227. ` Copyright Hewlett-Packard Company 1994.  All 
  1228. rights reserved.  Reproduction , adaptation, or 
  1229. translation without prior written permission is 
  1230. prohibited except as allowed under the copyright 
  1231. law. 
  1232. Printed in USA 7/94 
  1233. 5963-2045E
  1234.  
  1235.  
  1236. For more information, please send a message to 
  1237. odapter@cup.hp.com with the subject of "index" or
  1238. "help".  If you would like to speak with someone
  1239. in person, please leave a voice mail message at
  1240. the Odapter Support, Training and Consulting number,
  1241. (408) 447-5051 and someone will get back to you
  1242. as soon as possible.
  1243.  
  1244.  
  1245. > OOFILE (A.D. Software)
  1246.  
  1247. WHAT IS OOFILE?
  1248. OOFILE is a c++ framework. It can be used as a "traditional" ODBMS or can be
  1249. used to access a more traditional RDBMS or record-oriented database. The
  1250. current release is implemented with a Faircom c-tree Plus ISAM backend
  1251. on Mac and MS Windows. There would be very little difficulty in porting
  1252. this to any platform supported by Faircom, and we already have over 8
  1253. OS/compiler combinations in use (including 3 in-house).
  1254.  
  1255. Design Goals
  1256. - everything is native C++ with no (database) preprocessor required
  1257.  
  1258. - external interfaces to enable calling from Hypercard, Smalltalk etc.
  1259.  
  1260. - keep syntax very simple, familiar to 4GL users and not needing c++ gurus
  1261.  
  1262. - safe syntax that makes it hard to do the wrong thing by mistake, making
  1263.   maximum use of c++ compiler type-checking
  1264.  
  1265. - implement with a choice of database engines for the backend
  1266.  
  1267. - integrate with a range of common application frameworks
  1268.  
  1269. - provide additional classes for managing gui interfaces to help construct
  1270.   typical database applications, where features are not commonly part of
  1271.   application frameworks
  1272.  
  1273. - use a widely available level of c++ (no RTTI, templates or exception handling)
  1274.  
  1275. WHO IS OUR MARKET
  1276. 1) c++ developers (or wannabees) wanting an embedded database for writing
  1277. applications, probably working in combination with an application framework
  1278. such as zApp, OWL or PowerPlant.
  1279.  
  1280. 2) World Wide Web developers seeking a database and report-writer
  1281. combination to create web pages in response to queries, searching hundreds
  1282. of thousands of records (at least).
  1283.  
  1284.  
  1285. BASIC PHILOSOPHY
  1286. Object-oriented design is mainly about classes, not individual objects.
  1287.  
  1288. OOFILE is similar. Most of the time you model your data in terms of
  1289. classes. You do NOT declare individual objects (unlike the ODMG model).
  1290.  
  1291. Consider a database from the user's view. They generally see collections of
  1292. data and edit or interact with individual records from the collection. The
  1293. user doesn't care about individual object identity, they don't create
  1294. symbolic names for particular objects. These things may be important inside
  1295. the database, but do not need to be exposed.
  1296.  
  1297.  
  1298. SOME SIMPLE EXAMPLES
  1299. Note: for more examples, including online queries, look on
  1300. http://www.highway1.com.au/adsoftware/oofile.html
  1301.  
  1302. Before venturing into database definitions, let's consider some
  1303. operations on a database containing People, Job Histories and Companies.
  1304.  
  1305. // print my address
  1306. cout << People["Andy Dent"].Address;
  1307.  
  1308. // get a separate list (iterator) of people who worked for software companies
  1309. dbPeople softP( People.PrevJobs->Company->MainBusiness()=="Software" );
  1310.  
  1311. // for the current softP record (ie person), print the number of large companies
  1312. // where they've worked, and the current company size
  1313. cout << softP.Name() << "\t"
  1314.      << (softP.PrevJobs->Company->NumEmployees() > 100).count()
  1315.      << "\t"
  1316.      << softP.CurrentJob->Company->NumEmployees() << endl;
  1317.  
  1318. NOTE:
  1319. The () at the end of fields, as shown above, are optional for all cases except
  1320. fields in relational expressions, eg: People.CurrentJob->StartDate().
  1321.  
  1322.  
  1323. DECLARING SIMPLE TABLES
  1324. To define a table with a few fields, the simplest declaration would be:
  1325. CLASS_TABLE(dbPeople)
  1326.    dbChar    Name, Address;
  1327.    dbInt     Salary;
  1328. };
  1329.  
  1330.  
  1331. This defaults the size of the dbChar fields to 80 chars. To specify the
  1332. size of the fields, and/or control indexing options, you need to add a
  1333. constructor:
  1334. CLASS_TABLE(dbPeople)
  1335.    dbChar    Name, Address;
  1336.    dbInt     Salary;
  1337.  
  1338.    dbPeople : Name(40, "Name", kIndexNoDups),
  1339.               Address(255, "Address"),
  1340.               Salary("Salary", kIndexed)
  1341.    {};
  1342. };
  1343.  
  1344. Note that the constructors also specify the field name strings. These
  1345. are optional, but are of great benefit when writing query and
  1346. report-writer logic or when constructing a database schema that should
  1347. be readable by others.
  1348.  
  1349. SOME OTHER FEATURES
  1350. - Derived fields, either specified as a combination of existing fields or
  1351.   user-calculated
  1352.  
  1353. - User-defined relations
  1354.  
  1355. - keyword indexing
  1356.  
  1357. - phonetic indexing
  1358.  
  1359. - inbuilt report-writer
  1360.  
  1361.  
  1362. RELATIONS
  1363. One of the big features of an ODBMS is modelling the relationships between
  1364. objects. OOFILE allows you to model relations in a pure ODBMS sense, using
  1365. object identifiers, or explicitly perform runtime joins over database fields.
  1366. This would be mainly used by people porting existing database structures. There
  1367. are a number of syntaxes available to establish relationships, eg:
  1368.  
  1369.    dbConnect_ctree theDB;    // the physical database
  1370.    dbAcademics Academics;    // a couple of tables
  1371.    dbStudents  Students;
  1372.  
  1373.    dbRelation Supervision("Supervision");  // a concrete relation
  1374.  
  1375.    Supervision.Names("Supervises",        "is Supervised by")
  1376.               .Tables(Academics,           Students)
  1377.               .Links(Academics.Supervises, Students.Boss)
  1378.               .JoinField(Academics.StaffNo, Students.SupervisorNo);
  1379.  
  1380.  
  1381. APPLICATION FRAMEWORKS AND OOFILE
  1382. GUI Integration classes are under development for zApp & PowerPlant with more
  1383. frameworks to follow. A "non-intrusive" approach has been taken of providing
  1384. helper classes and instructions that let you incorporate OOFILE use into an
  1385. existing program.
  1386.  
  1387. These helper classes include subclasses of the native edit fields, that
  1388. store data directly into the database. Depending on your framework,
  1389. other classes are added for displaying lists of records, managing
  1390. multiple page input forms and similar business application functions.
  1391.  
  1392. For Macintosh users, the popular AppMaker code generator is being enhanced
  1393. to generate OOFILE applications. You will be able to go from drawing your
  1394. interface to a complete working database application, without writing code.
  1395. The next AppMaker and CodeWarrior CD's will contain more information and
  1396. samples.
  1397.  
  1398.  
  1399. STATUS
  1400. The current c-tree implementation is solid and the inbuilt test data generator
  1401. has been used to create databases of up to 200Mb in various configurations. The
  1402. largest beta tester is operating a 270Mb+ database on a Sparc Classic.
  1403. (500,000+ IP-flow objects as of mid July).
  1404.  
  1405. Product release, including (at least) zApp and PowerPlant integrations is
  1406. anticipated for September
  1407.  
  1408.  
  1409. TEST PLATFORMS in-house
  1410. c-tree+ v6.4B
  1411.  
  1412. Mac
  1413. - Symantec c++ v7.0.4
  1414. - CodeWarrior 6.1
  1415.  
  1416. MS Windows
  1417. - Borland c++ v4.5p3
  1418.  
  1419. SunOS 4.3
  1420. - g++ v2.6.3
  1421.  
  1422.  
  1423. CONTACT
  1424. Andy Dent
  1425. A.D. Software
  1426. 94 Bermuda Drive
  1427. Ballajura, Western Australia  6066
  1428. Phone/Fax +61-9-249-2719
  1429. eWorld:      DentA
  1430. CompuServe:  100033,3241
  1431. Internet:    dent@highway1.com.au
  1432.              ftp://ftp.highway1.com.au/pub/adsoftware/
  1433.              http://www.highway1.com.au/adsoftware/
  1434.  
  1435.  
  1436. MAINTENANCE
  1437. Priority fixes/consulting rate (drop-everything mode)  $60/hour
  1438.  
  1439. Patches to each version - free.
  1440.  
  1441. Major upgrades - 30% per seat.
  1442. or
  1443. Annual Maintenance, regardless of number of upgrades - 40% per seat
  1444.  
  1445.  
  1446. UPGRADES
  1447. Upgrading between database and report-writer options is at the cost difference.
  1448.  
  1449. Changing from one GUI to another is 50%. If you decide to later reactive the
  1450. original, it's also at 50% (ie: net result same as buying the 2nd GUI outright).
  1451.  
  1452. Note: if later GUI kits are at different prices, exchange rules will vary
  1453. to suit.
  1454.  
  1455.  
  1456. SITE LICENSING
  1457. (Excluding bundled c-tree)
  1458. by negotiation for large sites.
  1459. or
  1460. 40% off 2nd and subsequent copies
  1461.  
  1462.  
  1463. Andy Dent, Product Architect, A.D. Software, Western Australia
  1464. OOFILE - "the cross-platform OODBMS that speaks c++"
  1465. ftp://ftp.highway1.com.au/pub/adsoftware/
  1466. http://www.highway1.com.au/adsoftware/
  1467.  
  1468.  
  1469. > Phyla
  1470.  
  1471. Mainstay produce Phyla, an end-user, OODB for PCs.  Includes a drag-and-drop
  1472. interface and diagrams to represent objects and their relationships.  Runs
  1473. under Macintosh System.  Listed at $500.
  1474.  
  1475. Mainstay
  1476. 591 A Constitution Avenue
  1477. Camarillo, CA  93012
  1478. U.S.A.
  1479.  
  1480. Voice: (805)484-9400
  1481.        1-800-484-9817  Code 6276
  1482.        Email: mainstay1@aol.com
  1483.  
  1484.  
  1485. > POET <Persistent Objects and Extended Database Technology>  (Poet Software)
  1486.  
  1487. POET is a full-featured C++ ODBMS with support for, schema versioning,
  1488. check-in/check-out, online backup and object queries with OQL.
  1489. Workbenches are included for developers and administrators.  POET is
  1490. available for nearly all platforms.  OLE is supported and an ODBC
  1491. driver is available.  A single user version is sold for around $499,
  1492. and a multi-user user for mixed networks is also available.
  1493.  
  1494. C++ Language Support
  1495.  
  1496. o    tight semantic integration with C++
  1497. o    any C++ object or structure can be made persistent by adding the 
  1498.      persistent keyword
  1499. o    storing and reading a C++ object does not change its state or behavior
  1500. o    full support for C++ encapsulation, object identity,  inheritance, and 
  1501.      polymorphy
  1502. o    C++ pointers and references are automatically converted to database 
  1503.      references when storing objects
  1504. o    database references are automatically converted to C++ pointers and 
  1505.      references when reading objects
  1506. o    all database definition is done through a small extension to C++ 
  1507.      declaration syntax
  1508.  
  1509. NOTE: Visual Basic support with Sourcecraft.
  1510.  
  1511. Database Functionality
  1512. navigation, queries, sorting, indexes, single-user operation, multi-user
  1513. operation using client/server architecture, flexible locking for objects
  1514. and sets, nested transactions, watch & notify for objects and sets,
  1515. event handling, database size limited only by hard disk size
  1516.  
  1517. C++ Language Extensions
  1518. persistence, indexes, transient data elements in persistent classes, sets,
  1519. dependent objects, templates
  1520.  
  1521. PTXX schema compiler
  1522. automatically converts extended C++ class declarations into ANSI 2.0 code,
  1523. registers classes in the class dictionary, provides class versioning
  1524.  
  1525. Predefined C++ Classes
  1526. date, time, strings, and BLOBS (binary large objects)
  1527.  
  1528. Portability
  1529. all platforms are source-code compatible, any POET database may be read by
  1530. any computer full support for heterogeneous networks
  1531.