summaryrefslogtreecommitdiff
path: root/src/site/apt/index.apt
diff options
context:
space:
mode:
Diffstat (limited to 'src/site/apt/index.apt')
-rw-r--r--src/site/apt/index.apt182
1 files changed, 0 insertions, 182 deletions
diff --git a/src/site/apt/index.apt b/src/site/apt/index.apt
deleted file mode 100644
index e0c1717..0000000
--- a/src/site/apt/index.apt
+++ /dev/null
@@ -1,182 +0,0 @@
- -----
- Home
- -----
-
-Carbonado
-
- Carbonado is an extensible, high performance persistence abstraction layer
-for Java applications, providing a relational view to the underlying
-persistence technology. Persistence can be provided by a JDBC accessible SQL
-relational database, or it can be a Berkeley DB. It can also be fully replicated
-between the two.
-
- Even if the backing database is not SQL based, Carbonado still supports
-many of the core features found in any kind of relational database. It supports
-queries, joins, indexes, and it performs query optimization. When used in this
-way, Carbonado is not merely a layer to a relational database, it <is> the
-relational database. SQL is not a requirement for implementing relational
-databases.
-
- Defining new types in Carbonado involves creating an interface or abstract
-class which follows Java bean conventions. Additional information is specified
-by inserting special annotations. At the very least, an annotation is required
-to specify the primary key. Annotations are a feature first available in Java
-5, and as a result, Carbonado depends on Java 5.
-
- On the surface, it may appear that Carbonado types are defined like POJOs.
-The difference is that in Carbonado, types are object representations of
-relations. It is not an object database nor an object-relational bridge. In
-addition, data type definitions are simply interfaces, and there are no external
-configuration files. All the code to implement types is auto-generated, yet
-there are no extra build time steps.
-
- Carbonado is able to achieve high performance by imposing very low overhead
-when accessing the actual storage. Low overhead is achieved in part by auto
-generating performance critical code, via the Cojen library.
-
-* Version 1.2
-
- Carbonado 1.2 adds many new features, which are summarized here and in the {{{http://carbonado.svn.sourceforge.net/viewvc/*checkout*/carbonado/trunk/Carbonado/RELEASE-NOTES.txt}release notes}}:
-
- * General features
-
- * Loads and queries can invoke {{{apidocs/com/amazon/carbonado/Trigger.html#afterLoad%28S%29}triggers}}.
-
- * Added support for {{{apidocs/com/amazon/carbonado/Derived.html}derived}} properties.
-
- * Storable property values can be accessed by {{{apidocs/com/amazon/carbonado/Storable.html#getPropertyValue%28java.lang.String%29}name}} in addition to the direct method.
-
- * Repositories
-
- * New {{{apidocs/com/amazon/carbonado/repo/map/MapRepositoryBuilder.html}volatile repository}} provided, backed by a {{{http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentSkipListMap.html}ConcurrentSkipListMap}}.
-
- * Replicated repository resync operation allows a {{{apidocs/com/amazon/carbonado/capability/ResyncCapability.html#resync%28java.lang.Class,%20com.amazon.carbonado.capability.ResyncCapability.Listener,%20double,%20java.lang.String,%20java.lang.Object...%29}listener}} to be installed which can monitor progress or make changes.
-
- * Berkeley DB repositories add support for BigInteger and BigDecimal property types.
-
- * JDBC features
-
- * Created {{{apidocs/com/amazon/carbonado/Automatic.html}@Automatic}} annotation, which enables MySQL auto-increment columns.
-
- * Added {{{apidocs/com/amazon/carbonado/sequence/StoredSequence.html}sequence support}} for SQL databases that don't natively support sequences.
-
- * Support for {{{apidocs/com/amazon/carbonado/repo/jdbc/JDBCRepositoryBuilder.html#setAutoVersioningEnabled%28boolean,%20java.lang.String%29}automatic version management}}, eliminating the requirement that triggers be installed on the database.
-
- * More lenient with respect to column mappings: numbers and dates can represented by Strings; character data type supported; non-null column can be marked as @Nullable if also @Independent.
-
- * Query engine features
-
- * Added {{{apidocs/com/amazon/carbonado/Query.html#fetchSlice%28long,%20java.lang.Long%29}Query.fetchSlice}} method for supporting limits and offsets.
-
- * Derived properties can be indexed, allowing function and join indexes to be defined.
-
- * Added support for "where exists" and outer joins in queries via new syntax. This is explained in the "Queries with joins" section of the {{{docs/CarbonadoGuide.pdf}User Guide}}.
-
- * Added convenience method, {{{apidocs/com/amazon/carbonado/Query.html#exists%28%29}Query.exists}}.
-
- * Optimizations for covering indexes when using Berkeley DB.
-
-* Packages
-
- Carbonado is broken down into several package bundles for better dependency
-management. The easiest way to get started with Carbonado is to use the Berkeley DB JE
-backed repository. For this, you need to get the Carbonado and
-CarbonadoSleepycatJE package bundles.
-
- * {{{http://sourceforge.net/project/showfiles.php?group_id=171277&package_id=195677}Carbonado}}
-
- Core Carbonado code, depends on {{{http://jakarta.apache.org/commons/logging/}Apache Commons Logging}}, {{{http://joda-time.sourceforge.net/}Joda-Time}}, and {{{http://cojen.sourceforge.net/}Cojen}}.
-
- * {{{http://sourceforge.net/project/showfiles.php?group_id=171277&package_id=208711}CarbonadoSleepycatJE}}
-
- Contains repository for supporting Sleepycat/Oracle, {{{http://www.oracle.com/database/berkeley-db/je/index.html}Berkeley DB Java Edition}}. Berkeley DB JE code must be downloaded and installed separately.
-
- * {{{http://sourceforge.net/project/showfiles.php?group_id=171277&package_id=208709}CarbonadoSleepycatDB}}
-
- Contains repository for supporting Sleepycat/Oracle {{{http://www.oracle.com/database/berkeley-db/db/index.html}Berkeley DB}}. Berkeley DB code must be downloaded and installed separately.
-
- []
-
-* Terminology
-
- Loose mapping from Carbonado terminology to SQL terminology:
-
-*---------------------+-------------------------+
-| <<Carbonado>> | <<SQL>> |
-*---------------------+-------------------------+
-| Repository | database |
-*---------------------+-------------------------+
-| Storage | table |
-*---------------------+-------------------------+
-| Storable definition | table definition |
-*---------------------+-------------------------+
-| Storable instance | table row |
-*---------------------+-------------------------+
-| property | column |
-*---------------------+-------------------------+
-| Query | select/delete statement |
-*---------------------+-------------------------+
-| Cursor | result set |
-*---------------------+-------------------------+
-
-* Limitations
-
- Carbonado queries are not as expressive as SQL selects. Unlike SQL,
-Carbonado queries do not support data
-processing or aggregate functions. See Carbonado
-{{{http://sourceforge.net/tracker/?group_id=171277&atid=857357}feature
-requests}}.
-
- Carbonado supports the minimal querying capability that makes automatic
-index selection possible. Other features available in SQL can be emulated in
-code. If the database is local, then this offers no loss of performance.
-
- Applications that wish to use Carbonado only as a convenient layer over SQL
-will not be able to use full SQL features. Carbonado is by no means a
-replacement for JDBC. These kinds of applications may choose a blend of
-Carbonado and JDBC. To facilitate this, access to the JDBC connection in use by
-the current transaction is supported.
-
- The Carbonado repositories that are backed by Berkeley DB use a rule-based query
-optimizer to come up with a query plan. Cost-based optimizers are generally
-much more effective, since they estimate I/O costs. Carbonado has a rule-based
-optimizer mainly because it is easier to write.
-
-* Persistence Technology Requirements
-
- Carbonado is capable of supporting many different kinds of persistence
-technologies. A minimum set of features is required, however, in order to
-provide enough Carbonado features to justify the effort:
-
- * Arbitrary keys and values
-
- * Get value by key
-
- * Put value by key (does not need to distinguish insert vs update)
-
- * Delete value by key
-
- * Ordered key iteration
-
- * Iteration start specified via full or partial key
-
- []
-
- Ideally, the persistence technology should support transactions. If it does
-not, then its transactions must be implemented by batching updates in
-memory. The updates are not persisted until the transaction is committed. If
-atomic batch updates are supported, then the repository can report supporting
-an isolation level of "read committed". Otherwise, it can only support the
-lowest level of "read uncommitted".
-
- Additional features which are nice to have, but not strictly required:
-
- * Reverse iteration
-
- * ACID transactions
-
- * Storable type segregation (eliminates need to define key prefixes)
-
- * Truncation by storable type, if segregated
-
- []