Next:
Introduction
, Previous:
Top
, Up:
Top
Table of Contents
Copyright
1 Introduction
1.1 History
1.2 Elephant Goals
1.3 More Information
2 Tutorial
2.1 Overview
2.2 Getting Started
2.3 The Store Root
2.4 Serialization
2.5 Persistent Classes
2.6 Rules about Persistent Classes
2.7 Persistent collections
2.7.1 Using PSets
2.7.2 Using BTrees
2.8 Indexing Persistent Classes
2.9 Using Transactions
2.9.1 Why do we need Transactions?
2.9.2 Using
with-transaction
2.9.3 Nesting Transactions
2.9.4 Idempotent Side Effects
2.9.5 Transactions and Performance
2.9.6 Transactions and Applications
2.10 Advanced Topics
3 Installation
3.1 Requirements
3.1.1 Supported Lisp, Platform and Data store combinations
3.1.2 Library dependencies
3.2 Configuring Elephant
3.3 Loading Elephant
3.3.1 Loading Elephant via ASDF
3.3.2 Two-Phase Load Process
3.3.3 Packages
3.3.4 Opening a Store
3.4 Berkeley DB
3.5 Setting up Berkeley DB
3.6 Upgrading Berkeley DB Databases
3.6.1 Upgrading to 0.9
3.6.2 Upgrade from Elephant 0.5
3.7 CL-SQL
3.8 CL-SQL Example
3.9 Elephant on Windows
3.10 Test Suites
3.11 Documentation
4 User Guide
4.1 The Store Controller
4.2 Serialization details
4.2.1 Restrictions of Store-by-Value
4.2.2 Atomic Types
4.2.3 Aggregate Types
4.3 Persistent Classes and Objects
4.3.1 Persistent Class Definition
4.3.2 Instance Creation
4.3.3 Persistent Instance Lifecycle
4.3.4 Using Transient Slots
4.3.5 Using Persistent Slots
4.3.6 Class Redefinition
4.3.7 Support for
change-class
4.4 Class Indices
4.4.1 Synchronizing Classes and Data Stores
4.5 Persistent Sets
4.6 Persistent BTrees
4.7 BTree Cursors
4.8 BTree Indexing
4.9 Index Cursors
4.10 Multi-threaded Applications
4.10.1 Shared Resources
4.10.2 Data Store Thread Safety and Transactions
4.10.3 Minimize Dependency on Thread-Local Specials
4.11 Transaction Details
4.11.1
with-transaction
internals
4.11.2
execute-transaction
internals
4.11.3 Building your own transactional framework
4.11.4 Analyzing Dynamic Transaction Behavior
4.12 Multi-repository Operation
4.13 Multiple Processes and Distributed Applications
4.14 Repository Migration and Upgrade
4.15 Performance Tuning
4.16 Garbage Collection
4.17 Berkeley DB Data Store
4.17.1 Architecture Overview
4.17.2 Opening a Store
4.17.3 Starting a Transaction
4.17.4 Special Commands
4.17.5 Performance Tuning
4.18 CLSQL Data Store
4.18.1 Basic CLSQL Implementation
4.19 Postmodern Data Store
4.20 Native Lisp Data Store
5 User API Reference
5.1 Store Controllers
5.2 Persistent Objects
5.3 Persistent Object Indexing
5.3.1 Indexed Object Accessors
5.3.2 Direct Class Index Manipulation
5.3.3 Dynamic Indexing API
5.4 Persistent Sets
5.5 BTrees
5.6 Btree Cursors
5.7 Index Cursors
5.8 Transactions
5.9 Migration and Upgrading
6 Design Patterns
6.1 Persistent System Objects
6.2 File System Replacement
6.3 Checkpointing Conventional Program State
6.3.1 Assumptions
6.3.2 Snapshot Set
6.3.3 Snapshot Set Implementation
6.3.4 Isolating multiple snapshot sets
6.4 Elephant as Database
6.5 Multithreaded Web Applications
6.6 Real-World Application Examples
6.6.1 Konsenti
6.6.2 Conceptminer
7 Elephant Architecture
7.1 Initializing a store controller
7.2 Persistent Object Creation
7.3 Persistent Slot Protocol
7.4 Persistent Collection Protocols
7.5 Implementing Transactions
7.5.1 Implementing Execute Transaction
7.5.2 Interleaving Multiple Store Transactions
8 Data Store API Reference
8.1 Registration
8.2 Store Controllers
8.3 Slot Access
8.4 Collections
8.5 Cursors
8.6 Transactions
8.7 Multithreading Considerations
8.8 Handling Serialization
9 Copyright and License
9.1 Elephant Licensing
9.2 Elephant Manual Copyright and Licensing
9.3 3rd Party Libraries
9.4 Data Store Licensing Considerations
Appendix A Concept Index
Appendix B Object Index
Appendix C Function / Macro Index
Appendix D Variable Index
Colophon