- •Contents
- •Notices
- •Trademarks
- •Preface
- •The team who wrote this book
- •Now you can become a published author, too!
- •Comments welcome
- •Stay connected to IBM Redbooks
- •Chapter 1. Introduction
- •1.1 The opportunity of the in-memory database
- •1.1.1 Disk databases cannot expand to memory
- •1.1.2 IBM solidDB IMDB is memory-friendly
- •1.1.3 Misconceptions
- •1.1.4 Throughput and response times
- •1.2 Database caching with in-memory databases
- •1.2.1 Databases are growing
- •1.2.2 Database caching off-loads the enterprise server
- •1.2.3 IBM solidDB Universal Cache
- •1.3 Applications, competition, and the marketplace
- •Chapter 2. IBM solidDB details
- •2.1 Introduction
- •2.2 Server architecture
- •2.2.1 Database access methods and network drivers
- •2.2.2 Server components
- •2.3 Data storage in solidDB
- •2.3.1 Main-memory engine
- •2.4 Table types
- •2.4.1 In-memory versus disk-based tables
- •2.4.2 Persistent versus non-persistent tables
- •2.4.3 Choosing between different table types
- •2.5 Transactionality
- •2.5.1 Concurrency control and locking
- •2.5.2 Isolation levels
- •2.5.3 Durability levels
- •2.6 solidDB SQL extensions
- •2.6.1 solidDB SQL standard compliance
- •2.6.2 Stored procedures
- •2.6.3 Triggers
- •2.6.4 Sequences
- •2.6.5 Events
- •2.6.6 Replication
- •2.7 Database administration
- •2.7.1 Configuration settings
- •2.7.2 ADMIN COMMAND
- •2.7.3 Data management tools
- •2.7.4 Database object hierarchy
- •Chapter 3. IBM solidDB Universal Cache details
- •3.1 Architecture
- •3.1.1 Architecture and key components
- •3.1.2 Principles of operation
- •3.2 Deployment models
- •3.3 Configuration alternatives
- •3.3.1 Typical configuration
- •3.3.2 Multiple cache nodes
- •3.3.3 SMA for collocation of data
- •3.3.4 solidDB HSB servers for high availability
- •3.4 Key aspects of cache setup
- •3.4.1 Deciding on the replication model
- •3.4.2 Defining what to replicate
- •3.4.3 Starting replication
- •3.5 Additional functionality for cache operations
- •3.5.1 SQL pass-through
- •3.5.2 Aging
- •3.5.3 Improving performance with parallelism
- •3.6 Increasing scale of applications
- •3.6.1 Scaling strategies
- •3.6.2 Examples of cache database applications
- •3.7 Enterprise infrastructure effects of the solidDB Universal Cache
- •3.7.1 Network latency and traffic
- •3.7.3 Database operation execution
- •Chapter 4. Deploying solidDB and Universal Cache
- •4.1 Change and consideration
- •4.2 How to develop applications that use solidDB
- •4.2.1 Application program structure
- •4.2.2 ODBC
- •4.2.3 JDBC
- •4.2.4 Stored procedures
- •4.2.5 Special considerations
- •4.3 New application development on solidDB UC
- •4.3.1 Awareness of separate database connections
- •4.3.2 Combining data from separate databases in a transaction
- •4.3.3 Combining data from different databases in a query
- •4.3.4 Transactionality with Universal Cache
- •4.3.5 Stored procedures in Universal Cache architectures
- •4.4 Integrate an existing application to work with solidDB UC
- •4.4.1 Programming interfaces used by the application
- •4.4.2 Handling two database connections instead of one
- •4.5 Data model design
- •4.5.1 Data model design principles
- •4.5.2 Running in-memory and disk-based tables inside solidDB
- •4.5.3 Data model design for solidDB UC configurations
- •4.6 Data migration
- •4.7 Administration
- •4.7.1 Regular administration operations
- •4.7.2 Information to collect
- •4.7.3 Procedures to plan in advance
- •4.7.4 Automation of administration by scripts
- •Chapter 5. IBM solidDB high availability
- •5.1 High availability (HA) in databases
- •5.2 IBM solidDB HotStandby
- •5.2.1 Architecture
- •5.2.2 State behavior of solidDB HSB
- •5.2.3 solidDB HSB replication and transaction logging
- •5.2.4 Uninterruptable system maintenance and rolling upgrades
- •5.3 HA management in solidDB HSB
- •5.3.1 HA control with a third-party HA framework
- •5.3.2 HA control with the watchdog sample
- •5.3.3 Using solidDB HA Controller (HAC)
- •5.3.4 Preventing Dual Primaries and Split-Brain scenarios
- •5.4 Use of solidDB HSB in applications
- •5.4.1 Location of applications in the system
- •5.4.2 Failover transparency
- •5.4.3 Load balancing
- •5.4.4 Linked applications versus client/server applications
- •5.5 Usage guidelines, use cases
- •5.5.1 Performance considerations
- •5.5.2 Behavior of reads and writes in a HA setup
- •5.5.3 Using asynchronous configurations with HA
- •5.5.4 Using default solidDB HA setup
- •5.5.5 The solidDB HA setup for best data safeness
- •5.5.6 Failover time considerations
- •5.5.7 Recovery time considerations
- •5.5.8 Example situation
- •5.5.9 Application failover
- •5.6 HA in Universal Cache
- •5.6.1 Universal Cache HA architecture
- •5.6.2 UC failure types and remedies
- •6.1 Performance
- •6.1.1 Tools available in the solidDB server
- •6.1.2 Tools available in InfoSphere CDC
- •6.1.3 Performance troubleshooting from the application perspective
- •6.2 Troubleshooting
- •Chapter 7. Putting solidDB and the Universal Cache to good use
- •7.1 solidDB and Universal Cache sweet spots
- •7.1.1 Workload characteristics
- •7.1.2 System topology characteristics
- •7.1.3 Sweet spot summary
- •7.2 Return on investment (ROI) considerations
- •7.2.1 solidDB Universal Cache stimulates business growth
- •7.2.2 solidDB server reduces cost of ownership
- •7.2.3 solidDB Universal Cache helps leverage enterprise DBMS
- •7.2.4 solidDB Universal Cache complements DB2 Connect
- •7.3 Application classes
- •7.3.1 WebSphere Application Server
- •7.3.2 WebLogic Application Server
- •7.3.3 JBoss Application Server
- •7.3.4 Hibernate
- •7.3.5 WebSphere Message Broker
- •7.4 Examining specific industries
- •7.4.1 Telecom (TATP)
- •7.4.2 Financial services
- •7.4.3 Banking Payments Framework
- •7.4.4 Securities Exchange Reference Architecture (SXRA)
- •7.4.5 Retail
- •7.4.6 Online travel industry
- •7.4.7 Media
- •Chapter 8. Conclusion
- •8.1 Where are you putting your data
- •8.2 Considerations
- •Glossary
- •Abbreviations and acronyms
- •Index
Both systems had 32 GB of RAM, four attached solid state disks, and were running RHEL 5.4 operating system:
Dunnington Server: 4 x CPU Intel Xeon 7450 @ 2.4 GHz, total 24 cores
Nehalem-EX Server: 4 x CPU Intel Xeon 7560 @ 2.27 GHz, total 32 cores
The results are shown in Figure 7-6. The throughput peaks at more than a million transactions per second.
Figure 7-6 TATP Benchmark 2, throughput as a function of client load
7.4.2 Financial services
Financial systems are tremendously data-intensive and rely on speed in trading transactions that can result in huge profits and help exchanges compete and meet client demands. As market volatility continues to increase so does the risk of system failures that can lead to transaction delays, with a direct impact on the global financial system and the businesses and individuals that rely on it.
The broad applicability of solidDB product family in financial services sector is described in 7.4.3, “Banking Payments Framework” on page 243 and 7.4.4, “Securities Exchange Reference Architecture (SXRA)” on page 246. In financial markets, milliseconds can mean the difference between profit and loss. Database performance is often a critical factor in rapidly making a decision to trade, executing that trade, and reporting the trade. It is an even more critical factor considering that trading volumes are growing, and effective trading decisions require more complex analytics of more data.
242 IBM solidDB: Delivering Data with Extreme Speed
7.4.3 Banking Payments Framework
In this section, we use a payments processing environment to demonstrate architectural and design patterns that can benefit from the use of both solidDB server and solidDB Universal Cache.
Introduction
The enterprise payments systems are characterized by the fact that all payment methods share a common set of data elements and processing steps. For example, checks and credit cards can seem different on the surface, but they are actually quite similar. Both have a source of funds, a security model, and a clearing and settlement network. All payment methods also require certain services, such as risk and fraud management. However, regardless of the similarities, in most banks the payment systems exist in silos, closely tied to particular retail and wholesale product lines.
The IBM Enterprise Payments Platform (EPP), also known as the Financial Transaction Directory, is a solution that addresses the common problems of the banking industry, simplifying payment systems by providing banks with a single platform to integrate new and existing payments systems regardless of where they reside.
The EPP is based on WebSphere Message Broker and WebSphere Process Server and DB2 and Oracle database technologies and software. With a service orientated architecture, the platform allows other banking applications to use componentized payment services in support of multiple lines of business. For example, with EPP, banks can purchase or develop one service to handle identity verification requirements and reuse it elsewhere to respond faster to changing regulatory requirements.
The solidDB Universal Cache can be integrated into the EPP. By using the solidDB in-memory cache, critical data can be collocated with the application, thus reducing latency by eliminating the network. The use of the in-memory engine can also speed database operations.
Chapter 7. Putting solidDB and the Universal Cache to good use 243
A schematic view of the EPP framework with solidDB Universal Cache is shown in Figure 7-7. To collocate data with the application, solidDB server can be implemented with SMA or LLA.
|
|
solidDB |
EPP Application |
||
|
|
|
|
|
|
DB2 |
|
UC |
DB2 |
|
|
|
|
|
|
solidDB |
Payments |
|
|
solidDB |
|
UC |
& |
IDS |
|
|
|
Securities |
|
|
UC |
|
|
||
|
|
|
|
Operational |
|
|
|
|
|
|
DB |
Oracle |
|
solidDB |
|
Payment & |
|
|
|
UC |
|
|
|
|
|
|
Securities |
|
|
|
|
|
|
|
|
|
|
|
|
Process |
|
DB2/z |
|
solidDB |
|
Execution |
|
|
|
UC |
|
|
|
|
ESB |
|
|
solidDB |
|
DB2 |
|
|
UC |
|
|
solidDB |
|
|
|
||
|
|
|
|
||
Existing |
|
UC |
DB2 |
Lifecycle |
|
|
|
||||
Enterprise |
|
Direct |
|
State |
|
Databases |
|
Database |
|
|
|
|
|
Caches |
|
|
|
Figure 7-7 IBM Enterprise Payment Platform with solidDB Universal Cache
Benefits of solidDB Universal Cache in a payments system
Some of the key data in a payments system is by nature read-intensive, possibly requiring periodic updates. By caching such data into the in-memory cache, payment systems can benefit greatly from the solidDB Universal Cache.
The following sections describe the key payments system areas and the type of data that is suitable for caching with the solidDB Universal Cache.
Payments life cycle
Payment systems are mostly event-driven and asynchronous in nature. The life cycle of payments or batch of payments is thus typically specified through a state machine paradigm. The state machine definitions are rarely updated but they must be read frequently, returning single or small result sets. By caching the state machine definitions into the in-memory cache, the applications can read (and periodically update) the data with low latency.
244 IBM solidDB: Delivering Data with Extreme Speed
Bulking and debulking of payment information
Typically payments are received in bulk. The batch of payments must be processed quickly so that a response on the validity of the batch can be returned to the financial institution’s customer. The processing of the batch information involves the parsing and persistence of multiple payment instructions and the validation and construction of various object relationships in the database. This process is readand write-intensive; the bulking and debulking operation is sensitive to latency. Again, the applications can benefit from caching the batch information data into the solidDB in-memory cache.
Payment operational data
Various decision points in the payments life cycle rely on processing relational transaction data, such as the value of the transaction, the destination of the transaction, the currency of the transaction. This type of data affects the processing path of the payment and hence needs to be accessed frequently with a low latency requirement.
Reference lookups
The payment processing includes several enrichment, legal, and processing data list lookups that are by definition read-intensive. For example, using the in-memory cache can accelerate access to the following types of lookup data:
Fee management
Billing
Security
Anti money laundering
Account lookup
Routing
Risk scoring
Negative databases
Liquidity
Exchange rates
The solidDB Universal Cache features that are useful to payments systems
In this section, we describe two solidDB Universal Cache features that can bring additional benefit to the payments systems setups: data aging and SQL pass-through.
Data aging
Data aging is the process by which data is removed from the cache but not from the back-end database. Reciprocally, it also enables only specific data to be moved into the cache initially. The main benefit of data aging is the reduction of the amount of memory that the cache requires.
Chapter 7. Putting solidDB and the Universal Cache to good use 245
