Principles of transaction-oriented database recovery
ACM Computing Surveys (CSUR)
A database cache for high performance and fast restart in database systems
ACM Transactions on Database Systems (TODS)
A Crash Recovery Scheme for a Memory-Resident Database System
IEEE Transactions on Computers
Recovery algorithms for database machines with non-volatile main memory
Database Machines Sixth International Workshop, IWDM '89
Fault Injection Experiments Using FIAT
IEEE Transactions on Computers
VLDB '89 Proceedings of the 15th international conference on Very large data bases
Replication in the harp file system
SOSP '91 Proceedings of the thirteenth ACM symposium on Operating systems principles
ACM Transactions on Database Systems (TODS)
Performance evaluation of extended storage architectures for transaction processing
SIGMOD '92 Proceedings of the 1992 ACM SIGMOD international conference on Management of data
ISCA '92 Proceedings of the 19th annual international symposium on Computer architecture
Application-controlled physical memory using external page-cache management
ASPLOS V Proceedings of the fifth international conference on Architectural support for programming languages and operating systems
Lightweight recoverable virtual memory
SOSP '93 Proceedings of the fourteenth ACM symposium on Operating systems principles
Efficient software-based fault isolation
SOSP '93 Proceedings of the fourteenth ACM symposium on Operating systems principles
System support for software fault tolerance in highly available database management systems
System support for software fault tolerance in highly available database management systems
FINE: A Fault Injection and Monitoring Environment for Tracing the UNIX System Behavior Under Faults
IEEE Transactions on Software Engineering - Special issue on software reliability
RAID: high-performance, reliable secondary storage
ACM Computing Surveys (CSUR)
ATOM: a system for building customized program analysis tools
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
eNVy: a non-volatile, main memory storage system
ASPLOS VI Proceedings of the sixth international conference on Architectural support for programming languages and operating systems
FERRARI: A Flexible Software-Based Fault and Error Injection System
IEEE Transactions on Computers - Special issue on fault-tolerant computing
Informed prefetching and caching
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
Extensibility safety and performance in the SPIN operating system
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
The impact of architectural trends on operating system performance
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
Design of the TruCluster multicomputer system for the Digital UNIX environment
Digital Technical Journal
The Rio file cache: surviving operating system crashes
Proceedings of the seventh international conference on Architectural support for programming languages and operating systems
Dealing with disaster: surviving misbehaved kernel extensions
OSDI '96 Proceedings of the second USENIX symposium on Operating systems design and implementation
Free transactions with Rio Vista
Proceedings of the sixteenth ACM symposium on Operating systems principles
The Recovery Manager of the System R Database Manager
ACM Computing Surveys (CSUR)
Operating system support for database management
Communications of the ACM
Transaction Processing: Concepts and Techniques
Transaction Processing: Concepts and Techniques
The Architecture of the Dalí Main-Memory Storage Manager
Multimedia Tools and Applications
Implementation techniques for main memory database systems
SIGMOD '84 Proceedings of the 1984 ACM SIGMOD international conference on Management of data
Memory Channel Network for PCI
IEEE Micro
Management of Partially Safe Buffers
IEEE Transactions on Computers
Main Memory Database Systems: An Overview
IEEE Transactions on Knowledge and Data Engineering
The Design of the POSTGRES Storage System
VLDB '87 Proceedings of the 13th International Conference on Very Large Data Bases
VLDB '91 Proceedings of the 17th International Conference on Very Large Data Bases
Benchmarking Database Systems A Systematic Approach
VLDB '83 Proceedings of the 9th International Conference on Very Large Data Bases
Notes on Data Base Operating Systems
Operating Systems, An Advanced Course
SOSP '81 Proceedings of the eighth ACM symposium on Operating systems principles
FTCS'95 Proceedings of the Twenty-Fifth international conference on Fault-tolerant computing
The Design and Use of Persistent Memory on the DNCP Hardware Fault-Tolerant Platform
DSN '01 Proceedings of the 2001 International Conference on Dependable Systems and Networks (formerly: FTCS)
Hi-index | 0.01 |
Recent results in the Rio project at the University of Michigan show that it is possible to create an area of main memory that is as safe as disk from operating system crashes. This paper explores how to integrate the reliable memory provided by the Rio file cache into a database system. Prior studies have analyzed the performance benefits of reliable memory; we focus instead on how different designs affect reliability. We propose three designs for integrating reliable memory into databases: non-persistent database buffer cache, persistent database buffer cache, and persistent database buffer cache with protection. Non-persistent buffer caches use an I/O interface to reliable memory and require the fewest modifications to existing databases. However, they waste memory capacity and bandwidth due to double buffering. Persistent buffer caches use a memory interface to reliable memory by mapping it into the database address space. This places reliable memory under complete database control and eliminates double buffering, but it may expose the buffer cache to database errors. Our third design reduces this exposure by write protecting the buffer pages. Extensive fault tests show that mapping reliable memory into the database address space does not significantly hurt reliability. This is because wild stores rarely touch dirty, committed pages written by previous transactions. As a result, we believe that databases should use a memory interface to reliable memory.