International Spectrum Magazine A great resource for all things MultiValue Since Mar/Apr 2003 issue, Revelation has had a regular article http://www.intl-spectrum.com
Jan/Feb 2004 issue has the first OI for U2 article by Mike Ruane Mike basically tells the MultiValue community that their green-screens are ancient, dated, and yesterdays news International Spectrum Magazine
Jan/Feb 2008 issue has Bob Cartens article, Distributed Computing Using OpenInsight and IBM U2 A nice article giving a primer on MVC (model-view controller) using OpenInsight International Spectrum Magazine
Mar/Apr 2008 issue has Mike Ruanes article, Swapping your OI Systems Database to U2 Mike gives an overview of why U2 databases might be considered and how to make the migration International Spectrum Magazine
Revelation Tutorials http://www.revelation.com and click on the Tutorials link U2 Connector:
Quick Start Guide –A nice walk through tutorial for setting up a U2 connection and creating application components –Enter OpenInsight for U2 in the Revelation website Search then click on the Product Documentation and Articles link Documentation
Quick Start Guide –A nice walk through tutorial for setting up a U2 connection and creating application components –http://www.revsoft.co.uk/devwhitepapers.htm Documentation
Marketing http://www-306.ibm.com/software/data/u2/ and click on the U2 Business Value Video link
Give Credit Where Credit is Due A lot of gratitude goes to the following people… Bob Fernandes Bob Carten Bob Catalano Bryan Shumsky David Sigafoos Stacy Mecklenberg Pat McCann Mary Jean Blink Bob Orsini
Disclaimers I am not getting paid by Revelation or IBM for this presentation. I am not creating waves by suggesting that people consider U2 as an alternative to the native OpenInsight linear hash database system. I am not a U2 developer. –Therefore…I reserve the right to defer all U2 specific questions to others in the room...but I play one on TV.
Who Should be Interested in OI for U2? Existing U2 developers who are interested in an alternative environment to extend their applications into the GUI desktop or other front-ends that OpenInsight can provide. OI developers who need to an easy to way increase performance and scale up their applications. OI developers who need brand-name recognition to increase their marketability and credibility.
Tools of the Trade File NameSize unirpc32.dll64 KB UVCLNT32.dll52 KB UVIC32.dll36 KB
Installing the U2 Database Go to the U2 home page –http://www-306.ibm.com/software/data/u2/ –Make sure you sign in or register Click on the Trials and demos link Select U2 Personal Editions (Personal Edition Extended Relational Data Server) File DescriptionFile NameSize IBM UniVerse Personal EditionUVPE_WINDOWS_10.2.8.zip22 MB IBM UniVerse ClientsUV_10.2Acl.zip400 MB
Making a U2 Connection Use the Database Manager –Utilities -> Other MV Tables -> U2 Connection Setup Provide the connection parameters Click on the Attach volume button and see what happens Confirm that tables are attached by clicking on the Table Properties tab.
Interacting with the U2 Data Basic + Basic Interpreter (OpenEngine) MFSBFS (RTP57, U2_BFS)Physical Data
Programming with U2 Current OpenInsight programs will work as they always have U2 programs are data records stored in U2 database tables (e.g. BP ) These can be opened by any editor that works within OpenInsight Use the System Editor+ Keyword Configuration window to list "source" tables as "Tables Requiring Coloring". In the SRP Editor, this can be done in the Options window
Benchmark Process My goal was to compare the difference between U2 and OpenInsight file I/O operations All tests were done on my machine in order to provide an equal playing field Tests were done in three different environments –Pure U2 environment…running U2 basic logic against U2 tables –Pure OI environment…running OI basic logic against OI tables Indexes used for comparison when appropriate –Hybrid environment…running OI basic logic against U2 tables
Write Test Methodology 1 million rows of data written to an empty table Sequential Key ID (1 through 1000000) A randomizer was used to create a contacts database based on hardcoded lists –Ten first names –Ten last names –Ten cities –Ten states Average record size is about 60 bytes Tables in each environment were created with optimized capacity –U2 ( CREATE.FILE CONTACTS 30 1 4 SEQ.KEY RECORD.SIZE 60) –OI (Database Manager GUI, Presized to 1000000 records, Average Size = 60, Frame Size = 2048, Sizelock = 2)
Read Test Methodology Used table from the Write Test (sequential Key IDs from 1 through 1000000) 1000000 read requests Key ID randomized with each read request Used Read statement: For RecCnt = 1 to NumRecords ID = Rnd(1000000) + 1 Read Rec from hFile, ID else debug Next RecCnt
Select Test Methodology Used table from the Write Test (sequential Key IDs from 1 through 1000000) Three subsequent SELECT statements performed –FIRST_NAME = 'MARY –FIRST_NAME = 'MARY' AND WITH LAST_NAME = 'SMITH' –FIRST_NAME = 'MARY' AND WITH LAST_NAME = 'SMITH' AND WITH STATE = 'CA' CLEARSELECT performed between each select Times for all three selects are combined
Sort Test Methodology Used table from the Write Test (sequential Key IDs from 1 through 1000000) Three subsequent SORT statements performed –BY FIRST_NAME –BY FIRST_NAME BY LAST_NAME –BY FIRST_NAME BY LAST_NAME BY STATE CLEARSELECT performed between each select Times for all three selects are combined
Benchmark Observations Some operations yield 80x performance benefit in a pure U2 environment versus a pure OI environment (cf. Select Test Results) Hybrid environments (i.e. same OI code but using U2 tables) yields immediate benefits Read testing yielded minimal benefits in hybrid environments whereas sort testing suggests that a pure OI environment is better Hybrid environments will perform better as the U2 Bond technology improves and more operations are passed to the U2 server rather than being performed internally
Maximizing OI for U2 A straight conversion wont necessarily improve performance in all areas (cf. Benchmark Observations) OpenInsight will still perform database operations on the client side Optimized applications should push all I/O operations onto the server Good application design will use Client-Server, MVC, or n-Tier architectures