提交 a59e0765 authored 作者: Thomas Mueller's avatar Thomas Mueller

Documentation.

上级 ab727503
......@@ -766,6 +766,14 @@ files. There are two methods (algorithms) implemented to provide both security
and simplicity (that is, the lock file does not need to be deleted manually by the user).
The two methods are 'file method' and 'socket methods'.
</p>
<p>
The file locking protocols have the following limitation: if a shared file system is used,
and the machine with the lock owner is sent to sleep (standby or hibernate),
another machine may take over. If the machine that originally held the lock
wakes up, the database may become corrupt. If this situation can occur,
the application must ensure the database is closed when the application
is put to sleep.
</p>
<h3>File Locking Method 'File'</h3>
<p>
......
......@@ -18,7 +18,12 @@ Change Log
<h1>Change Log</h1>
<h2>Next Version (unreleased)</h2>
<ul><li>-
<ul><li>User defined functions: the source code is now available using
SELECT SOURCE FROM INFORMATION_SCHEMA.FUNCTION_ALIASES.
</li><li>User defined functions with source code didn't work after re-opening the database.
</li><li>The newsfeeds are now Atom 1.0 standard compliant.
</li><li>The database is now closed after an out of memory exception, because
the database could get corrupt otherwise.
</li></ul>
<h2>Version 1.2.124 (2009-11-20)</h2>
......
......@@ -48,16 +48,16 @@ http://www.h2database.com/html/roadmap.html
The development of H2 was started in May 2004,
but it was first published on December 14th 2005.
The main author of H2, Thomas Mueller, is also the original developer of Hypersonic SQL.
In 2001, he joined PointBase Inc. where he created PointBase Micro.
At that point, he had to discontinue Hypersonic SQL, but then the HSQLDB Group was formed
In 2001, he joined PointBase Inc. where he wrote PointBase Micro, a commercial Java SQL database.
At that point, he had to discontinue Hypersonic SQL. The HSQLDB Group was formed
to continued to work on the Hypersonic SQL codebase.
The name H2 stands for Hypersonic 2; however H2 does not share any code with
The name H2 stands for Hypersonic 2, however H2 does not share code with
Hypersonic SQL or HSQLDB. H2 is built from scratch.
</p>
<h2 id="why_java">Why Java</h2>
<p>
A few reasons using a Java database are:
The main reasons to use a Java database are:
</p>
<ul>
<li>Very simple to integrate in Java applications
......@@ -67,31 +67,28 @@ A few reasons using a Java database are:
</li><li>Unicode support
</li></ul>
<p>
Some people think that Java is still too slow for low level operations,
but this is not the case (not any more). In general, the code can be written a lot faster
than using C or C++. Like that, it is possible to concentrate on improving the algorithms
(that make the application faster) rather than porting the code and dealing with low
level stuff (such as memory management or dealing with threads).
Garbage collection is now probably faster than manual memory management.
Some think Java is too slow for low level operations,
but this is no longer true. Garbage collection for example is
now faster than manual memory management.
</p><p>
A lot of features are already built in (for example Unicode, network libraries).
It is very easy to write secure code because buffer overflows can not occur.
Some features such as the reflection mechanism can be used for randomized testing.
Developing Java code is faster than C or C++ code. When using Java,
most time can be spent on improving the algorithms instead of
porting the code to different platforms or doing memory management.
Features such as Unicode and network libraries are already built-in.
In Java, writing secure code is easier because buffer overflows can not occur.
Features such as reflection can be used for randomized testing.
</p><p>
Java is also future proof: a lot of companies support Java,
and it is now open source.
Java is future proof: a lot of companies support Java. Java is now open source.
</p><p>
This software does not rely on many Java libraries or other software, to
increase the portability and ease of use, and for performance reasons. For example,
the encryption algorithms and many library functions are implemented in the database
instead of using the existing libraries. Libraries that are not available in open source
Java implementations (such as Swing) are not used or only used for specific features.
To increase the portability and ease of use, this software depends on
very few libraries. Features that are not available in open source
Java implementations (such as Swing) are not used, or only used for optional features.
</p>
<h2 id="supporters">Supporters</h2>
<p>
Many thanks for those who helped by finding and reporting bugs, gave valuable feedback,
spread the word and have translated this project. Also many thanks to the donors who contributed
Many thanks for those who reported bugs, gave valuable feedback,
spread the word, and translated this project. Also many thanks to the donors who contributed
via PayPal:
</p>
<ul><li><a href="http://www.netsuxxess.de">NetSuxxess GmbH, Germany</a>
......
......@@ -31,10 +31,10 @@ Installation
To run the database, the following minimum software stack is known to work:
</p>
<ul>
<li>Windows XP, Mac OS X, or Linux
</li><li>Recommended Windows file system: NTFS (FAT32 supports files up to 4 GB)
<li>Windows XP or Vista, Mac OS X, or Linux
</li><li>Recommended Windows file system: NTFS (FAT32 only supports files up to 4 GB)
</li><li>Sun JDK 1.5 or newer
</li><li>Mozilla Firefox 1.5 or newer
</li><li>Mozilla Firefox
</li></ul>
<h2 id="supported_platforms">Supported Platforms</h2>
......
......@@ -31,11 +31,10 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
<h2>Priority 1</h2>
<ul>
<li>Bugfixes
</li><li>Support large updates (use the transaction log for rollback instead of persistent UndoLog.file).
</li><li>Support large updates (use the transaction log for rollback).
</li><li>More tests with MULTI_THREADED=1
</li><li>Optimization: result set caching (like MySQL)
</li><li>Server side cursors
</li><li>MVCC: support concurrent MERGE
</li></ul>
<h2>Priority 2</h2>
......@@ -77,6 +76,7 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Pluggable data type (for streaming, hashing, compression, validation, conversion, encryption)
</li><li>CHECK: find out what makes CHECK=TRUE slow, move to CHECK2
</li><li>Index usage for (ID, NAME)=(1, 'Hi'); document
</li><li>Clustering: reads should be randomly distributed (optional) or to a designated database on RAM
</li><li>Make DDL (Data Definition) operations transactional
</li><li>RANK() and DENSE_RANK(), Partition using OVER()
</li><li>Set a connection read only (Connection.setReadOnly) or using a connection parameter
......@@ -89,6 +89,7 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Cost for embedded temporary view is calculated wrong, if result is constant
</li><li>Comparison: pluggable sort order: natural sort
</li><li>Count index range query (count(*) where id between 10 and 20)
</li><li>Performance: update in-place
</li><li>Recursive Queries (see details)
</li><li>Eclipse plugin
</li><li>Asynchronous queries to support publish/subscribe: SELECT ... FOR READ WAIT [maxMillisToWait]
......@@ -136,7 +137,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Default date format for input and output (local date constants)
</li><li>Support custom Collators
</li><li>Document ROWNUM usage for reports: SELECT ROWNUM, * FROM (subquery)
</li><li>Clustering: reads should be randomly distributed or to a designated database on RAM
</li><li>Clustering: when a database is back alive, automatically synchronize with the master
</li><li>File system that writes to two file systems (replication, replicating file system)
</li><li>Standalone tool to get relevant system properties and add it to the trace output.
......@@ -161,7 +161,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Table order: ALTER TABLE TEST ORDER BY NAME DESC (MySQL compatibility)
</li><li>Backup tool should work with other databases as well
</li><li>Console: -ifExists doesn't work for the console. Add a flag to disable other dbs
</li><li>Performance: update in-place
</li><li>Check if 'FSUTIL behavior set disablelastaccess 1' improves the performance (fsutil behavior query disablelastaccess)
</li><li>Java static code analysis: http://pmd.sourceforge.net/
</li><li>Java static code analysis: http://www.eclipse.org/tptp/
......@@ -364,6 +363,7 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>MySQL, HSQLDB compatibility: support where 'a'=1 (not supported by Derby, PostgreSQL)
</li><li>Allow calling function with no parameters without parenthesis. See http://code.google.com/p/h2database/issues/detail?id=50
</li><li>CSV: currently # is a line comment and can start at any field. Make it optional.
</li><li>Finer granularity for SLF4J trace - See http://code.google.com/p/h2database/issues/detail?id=62
</li><li>Add database creation date and time to the database.
</li><li>Support ASSERTIONS.
</li><li>Support multi-threaded kernel with multi-version concurrency.
......@@ -389,7 +389,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Doclet: convert tests in javadocs to a java class.
</li><li>Doclet: format fields like methods, but support sorting by name and value.
</li><li>Doclet: shrink the html files.
</li><li>Finer granularity for SLF4J trace - See http://code.google.com/p/h2database/issues/detail?id=62
</li><li>MySQL compatibility: support REPLACE - See http://code.google.com/p/h2database/issues/detail?id=73
</li><li>MySQL compatibility: support SET NAMES 'latin1' - See also http://code.google.com/p/h2database/issues/detail?id=56
</li><li>MySQL compatibility: DELETE .. FROM .. USING - See http://dev.mysql.com/doc/refman/5.0/en/delete.html
......@@ -466,7 +465,7 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>H2 Console: support CLOB/BLOB upload.
</li><li>Recover tool: stream blob / clob data (problem: currently using varchar data type).
</li><li>Move away from system properties where possible.
</li><li>
</li><li>Database file lock: detect hibernate / standby / very slow threads (compare system time).
</li></ul>
<h2>Not Planned</h2>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论