What is TimesTen?
TimesTen is a high performance event-processing software component that enables applications to capture, store, use, and distribute information in real-time, while preserving transactional integrity and continuous availability.
Applications that incorporate TimesTen can process massive transaction volumes and respond instantly to requests using less expensive hardware configurations than would be required by conventional software architectures. TimesTen has been successfully integrated into many applications in telecom and networking, financial services, travel and logistics, and real-time enterprises.
Why is TimesTen Faster Than a Conventional Database?
In a conventional RDBMS, client applications communicate with a database server process over some type of IPC connection, which adds substantial performance overhead to all SQL operations. An application can link TimesTen directly into its address space to eliminate the IPC overhead and streamline query processing. This is accomplished through a direct connection to TimesTen. Client/server connections are also available to applications. From an application’s perspective, the TimesTen API is identical whether it is a direct connection or a client/server connection.
Furthermore, much of the work that is done by a conventional, disk-optimized RDBMS is done under the assumption that data is primarily disk resident. Optimization algorithms, buffer pool management, and indexed retrieval techniques are designed based on this fundamental assumption. Even when an RDBMS has been configured to hold all of its data in main memory, its performance is hobbled by deeply interwoven assumptions of diskbased data residency. These assumptions cannot be easily reversed because they are hard coded—spanning decades of research and development—within the deepest recesses of RDBMS processing logic, indexing schemes, data access mechanisms, etc.
TimesTen, on the other hand, is designed with the knowledge that data resides in main memory and can therefore take more direct routes to data, reducing codepath length and simplifying both algorithm and structure.
When the assumption of disk-residency is removed, complexity is dramatically reduced. The number of machine instructions drops by at least a factor of ten, buffer pool management disappears, extra data copies aren’t needed, index pages shrink, and their structure is simplified. When memory-residency for data is the bedrock assumption, the design gets simpler, more elegant, more compact, and requests are executed faster.
Installing TimesTen InMemory database
1) Checking the OS
[59] % getconf KERNEL_BITS
64
[60] % file /stand/vmunix
/stand/vmunix: ELF-64 executable object file – PA-RISC 2.0 (LP64)
So we need a TimesTen In-Memory Database 7.0.5 for HPUX PA-Risc (64-bit) (115,309,976 bytes).
Source – http://www.oracle.com/technology/software/products/timesten/index.html
2) Installation Flow
Unzip the software, go to the software directory and run setup.sh
[177] % ./setup.sh
There are 2 TimesTen instances installed locally :
1) tt70 (TimesTen7.0.0.0.0)
2) tt705 (TimesTen7.0.5.0.0)
Of the following options :
[1] Install a new instance
[2] Upgrade an existing instance
[3] Display information about an existing instance
[q] Quit the installation
Which would you like to perform? [ 1 ] 1
* The default instance name ‘tt70’ is in use.
NOTE: Each TimesTen installation is identified by a unique instance name.
The instance name must be a non-null alphanumeric string, not longer
than 255 characters.
Please choose an instance name for this installation? [ ] tt705dv220
Instance name will be ‘tt705dv220’.
Is this correct? [ yes ]
Please select a product :
[1] Oracle TimesTen In-Memory Database
[2] Oracle In-Memory Database Cache
Which product would you like to install? [ 1 ] 2
Of the three components:
[1] Client/Server and Data Manager
[2] Data Manager Only
[3] Client Only
Which would you like to install? [ 1 ] 1
Where would you like to install the tt705dv220 instance of TimesTen? [ /d1/home/times10 ] /d1
Where would you like to create the daemon home directory? [ /d1/TimesTen/tt705dv220/info ]
The directory /d1/TimesTen/tt705dv220/info does not exist.
Do you want to create it? [ yes ]
Installing into /d1/TimesTen/tt705dv220 …
Uncompressing …
The TimesTen Demo applications can take up to 64 Mbytes of disk space.
Depending on how your system is configured, you may not want to create the
DemoDataStore directory in the default location,
/d1/TimesTen/tt705dv220/info/DemoDataStore
Where would you like to create the DemoDataStore directory? [ /d1/TimesTen/tt705dv220/info ]
Creating /d1/TimesTen/tt705dv220/info/DemoDataStore …
** The default daemon port (17001) is already in use or within a range of 8
ports of an existing TimesTen instance. You must assign a unique daemon port
number for this instance. This installer will not allow you to assign another
instance a port number within a range of 8 ports of the port you assign below.
NOTE: All installations that replicate to each other must use the same daemon
port number that is set at installation time. The daemon port number can
be verified by running ‘ttVersion’.
Please enter a unique port number for the TimesTen daemon (<CR>=list)? [ ] 17005
Sorry, that port number is reserved. You cannot assign a port number
to a new instance that is within a range of 8 port numbers from an
existing instance.
Please enter a unique port number for the TimesTen daemon (<CR>=list)? [ ] 17010
Processing /d1/TimesTen/tt705dv220/PERL/perl.tar …
Would you like to enable datastore access control? [ no ]
The daemon logs will be located in /d1/TimesTen/tt705dv220/info
Would you like to specify a different location for the daemon logs? [ no ]
The following variables have been set in the file :
/d1/TimesTen/tt705dv220/bin/ttThunk
ORACLE_HOME=/d1/db/oracle9i
SHLIB_PATH=/d1/TimesTen/tt705dv220/lib:/d1/db/oracle9i/lib:/d1/db/oracle9i/network/lib:
Would you like to enable the Cache Connect to Oracle Administrator? [ yes ]
What TCP/IP port number would you like Cache Connect to Oracle Administrator to listen on? [ 17014 ]
NOTE: To access the TimesTen Cache Connect to Oracle Administrator
go to the url: http://localhost:17014/cache
Installing server components …
Would you like to log all server Connects/Disconnects? [ yes ]
What is the TCP/IP port number that you want the TimesTen Server to listen on? [ 17012 ]
Starting the daemon …
TimesTen Daemon startup OK.
Installing client components …
What is the name of the host running the TimesTen server? [ ap301mfg ]
What is the TCP/IP port number that the TimesTen server is listening on? [ 17012 ]
What is the name of the instance running the TimesTen server? [ tt705dv220 ]
Creating new /d1/TimesTen/tt705dv220/info/sys.ttconnect.ini
Extracting 3rd party tools …
Would you like to install the documentation? [ yes ]
Where would you like to create the doc directory (s=skip)? [ /d1/TimesTen/tt705dv220/doc ]
The directory /d1/TimesTen/tt705dv220/doc does not exist.
Do you want to create it? [ yes ]
NOTE: The TimesTen daemon startup/shutdown scripts have not been installed.
Run the script ‘/d1/TimesTen/tt705dv220/bin/setuproot’ as root.
This will move the TimesTen startup script into its appropriate location.
The startup script is currently located here :
‘/d1/TimesTen/tt705dv220/startup/tt_tt705dv220’.
End of TimesTen installation.
3) Post Install Steps
[179] % cd /d1/TimesTen/tt705dv220
[180] % ls
3rdparty README.html demo include lib nls ttclasses
PERL bin doc info mibs startup unsupported
[181] % cd bin
[182] % pwd
/d1/TimesTen/tt705dv220/bin
[184] % set PATH=/d1/TimesTen/tt705dv220/bin:$PATH
[185] % echo $PATH
/d1/TimesTen/tt705dv220/bin:/d1/db/oracle9i/bin::/usr/local/bin:/bin:/usr/ccs/bin:/usr/bin:/usr/5bin:/usr/bin/X11:/usr/dt/bin:/usr/openwin/bin::/usr/ucb:/appldev/bin:/d1/TimesTen/tt70/bin
[186] % set LD_LIBRARY_PATH=/d1/TimesTen/tt705dv220/lib:$LD_LIBRARY_PATH
Sanity checking the installation by getting the status of timesten daemon
[187] % ttstatus
TimesTen status report as of Thu Oct 16 00:42:58 2008
Daemon pid 1229 port 17010 instance tt705dv220
TimesTen server pid 1235 started on port 17012
TimesTen webserver pid 1234 started on port 17014
————————————————————————
End of report
4) Testing the installation by running a demo program
[188] % cd /d1/TimesTen/tt705dv220/demo
[189] % ls
README.TXT cache hrschema nls replication ttclasses ttdemoenv.sh tutorial
appserver common jdbc performance snmp ttdemoenv.csh ttisql xla
[191] % sh ttdemoenv.sh
LD_LIBRARY_PATH set to /d1/TimesTen/tt705dv220/lib:/d1/db/oracle9i/lib:/usr/local/lib:/usr/lib
SHLIB_PATH set to /d1/TimesTen/tt705dv220/lib
ANT_HOME set to /d1/TimesTen/tt705dv220/3rdparty/ant
PATH set to /d1/TimesTen/tt705dv220/bin:/d1/TimesTen/tt705dv220/demo/performance:/d1/TimesTen/tt705dv220/demo/ttclasses:/d1/TimesTen/tt705dv220/demo/xla:/d1/TimesTen/tt705dv220/demo/xla/xlaPersistent:/d1/TimesTen/tt705dv220/demo/tutorial/java:/d1/TimesTen/tt705dv220/3rdparty/ant/bin:/d1/db/oracle9i/bin::/usr/local/bin:/bin:/usr/ccs/bin:/usr/bin:/usr/5bin:/usr/bin/X11:/usr/dt/bin:/usr/openwin/bin:/usr/ucb:/appldev/bin:/d1/TimesTen/tt70/bin
CLASSPATH set to /d1/TimesTen/tt705dv220/lib/classes14.jar:/d1/TimesTen/tt705dv220/lib/timestenjmsxla.jar:/d1/TimesTen/tt705dv220/3rdparty/jms1.1/lib/jms.jar:/d1/TimesTen/tt705dv220/demo:/d1/TimesTen/tt705dv220/demo/tutorial/java:.
NOTE: The demos use system DSNs defined in
/d1/TimesTen/tt705dv220/info/sys.odbc.ini
To use your own DSNs, they must be defined in ~/.odbc.ini, or
you may set the environment variable ODBCINI to point to
the correct file.
[192] % cd performance/
[193] % ls
Makefile bulkinsert.c tpcb.c wiscbm.c wiscprotos.h
README.TXT sqlfunc.h tptbm.c wiscextra.c
[194] % make -f Makefile tptbm
cc +O3 -Ae +z +DA2.0W -I/d1/TimesTen/tt705dv220/include -I/d1/TimesTen/tt705dv220/demo/common -I/d1/TimesTen/tt705dv220/include/ttclasses -o tptbm.o -c tptbm.c
cc +O3 -Ae +z +DA2.0W -I/d1/TimesTen/tt705dv220/include -I/d1/TimesTen/tt705dv220/demo/common -I/d1/TimesTen/tt705dv220/include/ttclasses -o utils.o -c /d1/TimesTen/tt705dv220/demo/common/utils.c
cc +O3 -Ae +z +DA2.0W -I/d1/TimesTen/tt705dv220/include -I/d1/TimesTen/tt705dv220/demo/common -I/d1/TimesTen/tt705dv220/include/ttclasses -o ttgetopt.o -c /d1/TimesTen/tt705dv220/demo/common/ttgetopt.c
cc -o tptbm +DA2.0W -Wl,+s tptbm.o utils.o ttgetopt.o -L/d1/TimesTen/tt705dv220/lib -ltten -lpthread -lm
[197] % ./tptbm -proc 4 -read 85 -insert 10 tptbmdata_tt705dv220
Connecting to the data source
Populating benchmark data store
Waiting for 4 processes to initialize
Beginning execution with 4 processes: 85% read, 5% update, 10% insert, 0% delete
Elapsed time: 1.5 seconds
Transaction rate: 26684.5 transactions/second
[198] %
Hope this helps !!