Ingres 10 DBMS

Report
Ingres 10 Key Features
GIUA 2010, Würzburg September 30
Sarkaut Mohn
Ingres 10 Key Features
 New Ingres 10 Features Derived by Ingres ISV
Partners
–
–
–
–
–
–
–
Multi Version Concurrency Control (MVCC)
Scalar Subqueries
Batch Query Execution
Data Encryption
Rename Objects
Long Identifiers
Bulk Load Performance
Confidential — © 2010 Ingres Corporation
Slide 2
MVCC
Why We Need It?
Time
Update Transaction
Read Transaction with
Traditional Locking
Read Transaction
with MVCC Locking
• Updates row A in table X
• Attempts to read row A
in table X
• Updates row B in table Y
BLOCKED because
read cannot acquire
lock held by update!
• Commits transaction
• Read from table X
finally succeeds after
update has committed


With MVCC, readers are no longer blocked by writers
Likewise, writers are no longer blocked by readers
Confidential — © 2010 Ingres Corporation
Slide 3
• Successfully reads row
A from table X
• Successfully reads row
B from table Y
Data read is preupdate, so no
locking required
No application
hangs 
Better performance!
MVCC
Why We Need It?
 Existing applications originally written for DBMSs
like Oracle that support MVCC depend on the high
concurrency it provides
 Avoids performance problems and application hangs
that Ingres encounters with traditional (ANSI
Isolation Level based) locking
 Applications can avoid having to read inconsistent
data
– Ugly workaround of running with dirty read isolation
will no longer be necessary
 Readers see consitent transaction / statement
snapshot of data based on isolation level
Confidential — © 2010 Ingres Corporation
Slide 4
Scalar Subqueries
 Ingres currently only allows scalar subqueries to be
used in limited contexts
SELECT * FROM t1 WHERE t1.col =
(SELECT min(col) from t2 where t2.key = t1.key);
DELETE FROM t WHERE col = (SELECT max(col) FROM t);
 Ingres 10 will allow scalar subqueries to be used in
more instances
 Rewriting existing applications to avoid subqueries
is not easily scriptable
Confidential — © 2010 Ingres Corporation
Slide 5
Scalar Subqueries
Examples
Usage
Example
Projection List of
SELECT
SELECT emp_name, dept_name,
(SELECT MAX(salary) FROM emp) AS highest_salary
FROM emp;
VALUES clause
in INSERT
INSERT INTO credit(name, max_credit)
VALUES(‘XYZ’,
(SELECT MAX(credit) FROM credit_table
WHERE name = ‘XYZ’));
SET clause in
UPDATE
UPDATE tab1 t1 SET col =
(SELECT sum(col) FROM tab2 t2
WHERE t2.key = t1.key);
CASE expression SELECT vars,
CASE (SELECT expr FROM t2 WHERE t2.key = t1.key)
WHEN 1 THEN ‘A’ ELSE ‘B’ END
FROM t1;
Procedure
parameter
EXECUTE PROCEDURE proc
(count_param = (SELECT count(*) FROM t));
Confidential — © 2010 Ingres Corporation
Slide 6
Batch Query Execution
Non-Batch Execution
Client Application
Batch Execution
Ingres DBMS
JDBC Application
Creates Table
Create Table
Inserts into Table
ok
ok
ok
ok
Executes
Procedure
Execute
Procedure
Creates Table
Inserts into Table
Executes
Procedure
Create Table
Insert into Table
Execute
Procedure
ok
Insert into Table
Ingres 10 DBMS
ok

Any SQL statement can appear in a batch, except:
–
–
–

Fewer round trip
messages 
Better performance!
SELECTs
Row producing procedures
Transaction Statements
Individual statements in the batch can succeed while others can fail,
provided the failures aren’t severe
Confidential — © 2010 Ingres Corporation
Slide 7
Batch Query Execution
Current Supported Interfaces
 Java
– Use addBatch and executeBatch methods
– Unchanged from previous releases
• But now recognized by the DBMS rather than
translated in JDBC
• Massive improvement in performance
 OpenAPI
– New IIapi_batch() function
 No other interfaces currently supported
– ODBC may come soon
Confidential — © 2010 Ingres Corporation
Slide 8
Batch Query Execution
Additional Feature Details
 Ingres JDBC driver already supports the API interfaces
necessary for batch execution
– addBatch
– executeBatch
 Existing JDBC implementation, however, executes the
same as non-batch; i.e., no reduction in client-server
communication
 Batch execution also allows a single statement to be
executed with multiple sets of parameters
 This form of execution has been optimized for better load
performance
 Performance of ETL tools that use batch execution in this
way will therefore benefit
Confidential — © 2010 Ingres Corporation
Slide 9
Batch Query Execution
Special Optimization for Insert
Ingres 10 DBMS
JDBC Application
• Prepare INSERT
statement
•Execute “prepare”
ok
• Add “Execute INSERT
with parameter set 1” to
batch
• Add parameter set 2 to
batch
•…
• Add parameter set n to
batch
• Execute batch
•Load “copy” buffer with
each parameter set
•Execute Copy Statement to
insert data
•Return results
ok
…
ok
Confidential — © 2010 Ingres Corporation
Slide 10
Batch Query Execution
Related Parameters
 JDBC
– System Property: ingres.jdbc.batch.enabled
• Determines whether executeBatch() will translate into batch
execution in the DBMS or revert to the pre-10.0 behavior
 DBMS
– Config Value: ii.<node>.*.batch_copy_optim
• Values “ON” (use the copy optimization), “OFF” (do not use the
copy optimization, insert statements are not converted to a copy)
– SQL “SET [NO]BATCH_COPY_OPTIM”
• As above for current session only
 All parameters are for debug purposes only
Confidential — © 2010 Ingres Corporation
Slide 11
Data Encryption
 Required for
– PCI-DSS 1.2 compliance - credit card information storage
(https://www.pcisecuritystandards.org/)
– HIPAA compliance - health information storage
 Applies only to data “at rest”
 Specified at the column level
 By default, a “salt” and “verification hash” will be
embedded in the encrypted data
– Salt – Random bits that further obfuscate the encrypted
data
– Verification hash – Collision-resistant hash that allows the
integrity of the decryption to be verified
Confidential — © 2010 Ingres Corporation
Slide 12
Data Encryption
Securing the Encryption Keys

Tables with encrypted columns must specify:
– Whether to use AES-128, AES-192, or AES-256 encryption
– An encryption passphrase

Passphrase is never stored on disk, only the encrypted table key
Random Key

AES-256 Encryption
Encrypted
Encrypted
Table Key
Key
Table
To access encrypted columns within a table, encryption passphrase
associated with the table must be enabled at server startup
Encrypted
Encrypted
TableKey
Key
Table

Key Derived
From
Passphrase
Key Derived
From
Passphrase
Unencrypted Table Key
AES-256 Decryption
Unencrypted table key can then be used to encrypt/decrypt column
data
Confidential — © 2010 Ingres Corporation
Slide 13
Rename Objects
Introduction
Rename table/column:
Ability to rename a table or a column using new SQL
syntax:
 No need to drop and recreate the table.
 No need to drop and add the column.
 No unload/reload of data.
Rename Objects
New SQL Syntax
 Table rename
[EXEC SQL] RENAME [TABLE] [schema.]<table_name>
TO <new_table_name>
[EXEC SQL] ALTER TABLE [schema.]<table_name>
RENAME TO <new_table_name>
 Column rename
[EXEC SQL] ALTER TABLE [schema.]<table_name>
RENAME [COLUMN] <column_name>
TO <new_column_name>
Rename Objects
Access Restrictions
 You must own the tables (or whose column) you are
renaming.
 You cannot rename a system catalog, extended
system catalog or any tables owned by super user
‘$ingres’.
 You cannot rename columns of such catalogs
Rename Objects
Naming Restrictions
 The name of the new table/column should conform
to naming rules for tables.
– See SQL Reference Guide, chapter 2.
 There should be no table / column already existing in
the database with same name and owner
– The new table / column name will get the same reltid
or attribute id.
Long Identifiers
 Ingres object names are currently limited to 32 characters
 Current limit is problematic for applications like Hibernate that
auto-generate long names
 Ingres 10 increases most object names to 256 characters
– Objects affected include: tables, columns, procedures, parameters,
rules, sequences
– Objects excluded include: databases, users
 Enhancements made in DBMS to avoid additional memory
overhead if applications do not need long identifiers
 Pre-existing databases will be converted to support long
identifiers during database upgrade
Confidential — © 2010 Ingres Corporation
Slide 18
Bulk Load Performance
 CSV (comma separated values) and SSV (semi-colon
separated values) delimiters allow COPY to READ /
WRITE files
 COPY from text file up to 2x faster
 COPY FROM loading partitioned table bulk loads
into partitions
Confidential — © 2010 Ingres Corporation
Slide 19
Other Ingres 10 Features
 Application Enablement Features
– New BOOLEAN Data Type (TRUE, FALSE, NULL)
– JDBC 4.0 Compliance
 Additional remote data access performance improvements
 New Functions – GREATEST, LEAST, NVL, NVL2
 Hash Join and Hash Aggregation Improvements
 Recovery Server Error Handling
 Ingres for 64-bit Windows
 64-bit ODBC Driver
Confidential — © 2010 Ingres Corporation
Slide 20
Full Ingres 10 Features
http://community.ingres.com/wiki/Ingres_Roadmap/10
Confidential — © 2010 Ingres Corporation
Slide 21
Potential Features Post Ingres 10
 Scrollable Cursors for Large
Objects
 UTF-8 Transliteration
 Reuse Indexes for Constraints
 Allow NULLs in Unique
Columns
 Expanded Usernames
 Stored Procedure
Enhancements
 ALTER TABLE Enhancements
 Implicit Commits for DDL
 …
 Improved Data Partitioning
 Query Caching Improvements
 Improved Memory
Management
 Improved Top N Performance
 Improved Performance
Monitoring
 Generate data histograms
within the DBMS
 Improved UTF-8 Performance
 Installer Enhancements
 Improved GeoSpatial Support
Confidential — © 2010 Ingres Corporation
Slide 22

similar documents