Sommaire Sleepycat, les origine de Berkeley DB Oracle, Berkeley DB aujourd'hui BDB Introduction Stokage Transaction Réplication
Sleepycat, les origine de Berkeley DB Histoire Berkeley DB is a widely used and freely-licensed database software originally developed at the University of California, Berkeley for 4.4BSD Unix. Sleepycat Software, Inc. was the company primarily responsible for maintaining the Berkeley DB packages from 1996 to 2006. Google Archives Sleepycat web site : The Berkeley DB is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. It includes B+tree, Extended Linear Hashing, Fixed and Variable-length record access methods, transactions, locking, logging, shared memory caching and database recovery. DB supports C, C++ and Java APIs. In 2003, Sleepycat added a second product to its offerings,, a native XML database. In 2004, Sleepycat added a third, Berkeley DB Java Edition, a pure Java version of Berkeley DB. In February 2006, Sleepycat was acquired by Oracle Corporation, which has continued developing Berkeley DB.
Sleepycat, les origine de Berkeley DB technique Database access methods: B+tree. Hash (Extended Linear Hashing) Fixed/Variable Length Records Duplicate records per key in the B+tree and Hash access methods. Retrieval by record number in the B+tree access method. Keyed and sequential (forward and reverse) retrieval, insertion, modification and deletion. [...] Transaction support: Multiple readers/single writer locking. Two-phase, page-level locking. Degree 3 Isolation. Before and after-image logging. Database recovery: Database recovery after application or system failure, including catastrophic recovery. Online database backups. Administrative functionality is provided both via standalone utilities as well as directly accessible within the DB API. General purpose lock, log, transaction and shared memory buffer pool managers, with standalone APIs.
Oracle, Berkeley DB aujourd'hui Berkeley DB family Berkeley DB APIs are available in almost all programming languages including ANSI-C, C++, Java, C#, Perl, Python, Ruby and Erlang to name a few. There is a pure-java version of the Berkeley DB library designed for products that must run entirely within a Java Virtual Machine (JVM). We support the Microsoft.NET environment and the Common Language Runtime (CLR) with a C# API. Berkeley DB Written in C Software Library Key/value API SQL API by incorporating SQLite BTREE, HASH, QUEUE, RECNO storage C++, Java/JNI, C#, Python, Perl,... Java Direct Persistence Layer (DPL) API Java Collections API Replication for High Availability Berkeley DB Java Edition Written in Java Java Software Archive (JAR) Key/value API Java Direct Persistence Layer (DPL) API Java Collections API Replication for High Availability Written in C++ Software Library Layered on Berkeley DB XQuery API by incorporating XQilla Indexed, optimized XML storage C++, Java/JNI, C#, Python, Perl,... Replication for High Availability
Introduction to Oracle propose un ensemble de documents détaillant le fonctionnement et l'utilisation des fonctionnalités de BDB XML Datasheet Introduction to Getting Started with XML Storage and XQuery Access Getting Started with Transactional Processing of XML using XQuery Getting Started with Berkeley DB Replication Reference Guide Programmatic APIs Anatomy of an XML database : Oracle. Oracle White paper, september 2006.
Getting Started with XML Storage and XQuery Access XML feature Containers (Whole documents or As document nodes) Indices based on the structure of your XML documents. Queries are performed using the XQuery 1.0 language. Query results are always returned as a set. Storage Metadata attribute support. Document modification. Databases features In-process data access. Ability to manage databases up to 256 terabytes in size. Database environment support. Atomic operations. Isolated operations. Recoverability. Concurrent access. Library dependencies Berkeley DB Xerces Xqilla ZLIB, optional support for compression in BDB XML Programmatic APIs
Getting Started with XML Storage and XQuery Access
Getting Started with XML Storage and XQuery Access Exception Handling and Debbuging XMLManager (BDB Environnments) XMLContainers Adding XML Documents to Containers Using Xquery with BDB XML Managing documents XML Indices Zoom XML Indices Index Types : Uniqueness indicates whether the indexed value must be unique within the container Path Types (node or edge) Node Types (element, attribut or metadata) Key Types (equality, presence, substring) Syntax Types identifies the syntax to use for the indexed value. Specifying Index Strategies : [unique]-{path type}-{node type}-{key type}-{syntax type}
Getting Started with XML Storage and XQuery Access
Getting Started with Transactional Processing of XML using XQuery Benefits : Atomicity, Consistency, Isolation, Durability Application Requirements Environments Transaction subsystem Logging subsystem XmlTransaction handles Container open requirements Deadlock detection Concurrency. Multi-threaded and Multi-process Applications. Transaction Recoverability. Managing BDB XML files (containers, log files, regions files), Checkpoints, Backup procedure (utilies, API), Recovy procedure Performance tuning It is possible to use Berkeley DB databases along side of BDB XML containers. When you do this, you will typically use both the databases and the containers from within the same environment so that you can combine operations to both using transactions. Manage degrees of Isolation Allow non-durable transaction
Getting Started with Berkeley DB Replication Replication Benefits improve application reliability, read performance, transactional commit performance, data durability guarantee. single master, multiple replica replication strategy. Requirements. Transactional Application Replication Environments. Replication Databases Communications Layer Selecting a Master. Holding Elections. Switching Masters Permanent Message Handling DB Replication Manager framework or Replication Base APIs. Additionnal Features Delayed Synchronisation Managing Block Operations Stop Auto-Initialization Client to Client Tranfert Bulk Transfert