Elephant: A Persistent Metaobject Protocol and Object Oriented Database for Common Lisp Persistent object protocol –persistent-metaclass specializes slot.

Slides:



Advertisements
Similar presentations
Introduction to NHibernate By Andrew Smith. The Basics Object Relation Mapper Maps POCOs to database tables Based on Java Hibernate. V stable Generates.
Advertisements

1 SRI International Bioinformatics The Ocelot Frame Knowledge Representation System Peter D. Karp, Ph.D. Bioinformatics Research Group SRI International.
Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit.
Introduction to the BinX Library eDIKT project team Ted Wen Robert Carroll
Database System Concepts and Architecture
Programming Paradigms Introduction. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1:
Streaming NetCDF John Caron July What does NetCDF do for you? Data Storage: machine-, OS-, compiler-independent Standard API (Application Programming.
Cacti Workshop Tony Roman Agenda What is Cacti? The Origins of Cacti Large Installation Considerations Automation The Current.
© 2009 Research In Motion Limited Data structures and memory management on mobile devices.
Google Bigtable A Distributed Storage System for Structured Data Hadi Salimi, Distributed Systems Laboratory, School of Computer Engineering, Iran University.
1.1 CAS CS 460/660 Introduction to Database Systems File Organization Slides from UC Berkeley.
Google AppEngine. Google App Engine enables you to build and host web apps on the same systems that power Google applications. App Engine offers fast.
Professional Informatics & Quality Assurance Software Lifecycle Manager „Tools that are more a help than a hindrance”
The POSTGRES Next - Generation Database Management System Michael Stonebraker Greg Kemnitz Presented by: Nirav S. Sheth.
Triple Stores.
Database Management System Lecture 2 Introduction to Database management.
STEALTH Content Store for SharePoint using Windows Azure  Boosting your SharePoint to the MAX! "Optimizing your Business behind the scenes"
Linux Operations and Administration
1 The Google File System Reporter: You-Wei Zhang.
Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D.
Functions of a Database Management System
IBrutus Request Processor Grammar Rules Computer Vision Module Software Analysis and Design  Multiple data sources - CETI project data is spread over.
DB Libraries: An Alternative to DBMS By Matt Stegman November 22, 2005.
1 Designing a Data Exchange - Best Practices Data Exchange Scenarios –Sender vs. Receiver-initiated exchanges –Node Design Best Practices: –Handling Large.
Some key-value stores using log-structure Zhichao Liang LevelDB Riak.
COMP 365 Android Development.  Manages access from a central database  Allows multiple applications to access the same data.
XML as a Boxwood Data Structure Feng Zhou, John MacCormick, Lidong Zhou, Nick Murphy, Chandu Thekkath 8/20/04.
NoSQL Databases Oracle - Berkeley DB Rasanjalee DM Smriti J CSC 8711 Instructor: Dr. Raj Sunderraman.
NoSQL Databases Oracle - Berkeley DB. Content A brief intro to NoSQL About Berkeley Db About our application.
Chapter 3.5 Memory and I/O Systems. 2 Memory Management Memory problems are one of the leading causes of bugs in programs (60-80%) MUCH worse in languages.
Introduction and Features of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++
Contents 1.Introduction, architecture 2.Live demonstration 3.Extensibility.
DataFlex Connectivity Kit for Pervasive.SQL Eddy Kleinjan.
PHP Features. Features Clean syntax. Object-oriented fundamentals. An extensible architecture that encourages innovation. Support for both current and.
Hibernate 3.0. What is Hibernate Hibernate is a free, open source Java package that makes it easy to work with relational databases. Hibernate makes it.
Introduction to Database Systems1. 2 Basic Definitions Mini-world Some part of the real world about which data is stored in a database. Data Known facts.
ROOT I/O for SQL databases Sergey Linev, GSI, Germany.
Efficient RDF Storage and Retrieval in Jena2 Written by: Kevin Wilkinson, Craig Sayers, Harumi Kuno, Dave Reynolds Presented by: Umer Fareed 파리드.
Elephant: Easy Persistence No ORMs at all Very easy to use APIs: btree, persistent sets, and CLOS integration Dynamic index creation on slots Functional.
INTRODUCTION TO DBS Database: a collection of data describing the activities of one or more related organizations DBMS: software designed to assist in.
RDF languages and storages part 1 - expressivness Maciej Janik Conrad Ibanez CSCI 8350, Fall 2004.
The Million Point PI System – PI Server 3.4 The Million Point PI System PI Server 3.4 Jon Peterson Rulik Perla Denis Vacher.
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, written in Java code, that.
ICOM 5016 – Introduction to Database Systems Lecture 13- File Structures Dr. Bienvenido Vélez Electrical and Computer Engineering Department Slides by.
SQL Basics Review Reviewing what we’ve learned so far…….
Completeness Criteria for Object- Relational Database Systems by Won Kim April 2002 Sang Ho Lee School of Computing, Soongsil University
Introduction to DBMS Purpose of Database Systems View of Data
Jean-Philippe Baud, IT-GD, CERN November 2007
Section 6 Object Storage Gateway (RADOS-GW)
Triple Stores.
The Object-Oriented Database System Manifesto
MongoDB Er. Shiva K. Shrestha ME Computer, NCIT
WinCC OA NextGen Archiver: OSS Database selection process Dipl. -Ing
Open Source distributed document DB for an enterprise
UFC #1433 In-Memory tables 2014 vs 2016
Informix Red Brick Warehouse 5.1
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
Triple Stores.
Introduction to Database Systems
Quasardb Is a Fast, Reliable, and Highly Scalable Application Database, Built on Microsoft Azure and Designed Not to Buckle Under Demand MICROSOFT AZURE.
Data Model.
Cloud Web Filtering Platform
Introduction to DBMS Purpose of Database Systems View of Data
Instructor 彭智勇 武汉大学软件工程国家重点实验室 电话:
Introduction of Week 11 Return assignment 9-1 Collect assignment 10-1
ICOM 5016 – Introduction to Database Systems
Database System Concepts and Architecture
Triple Stores.
NoSQL databases An introduction and comparison between Mongodb and Mysql document store.
Plug-In Architecture Pattern
Presentation transcript:

Elephant: A Persistent Metaobject Protocol and Object Oriented Database for Common Lisp Persistent object protocol –persistent-metaclass specializes slot accesses –Enables persistent links between objects –Enables automatic indexing of class instances by slot value –Efficient instance mapping by class, slot values, etc. Simple persistent collection APIs –Persistent sets (add, remove, find) –Btrees (insert, delete, pred, succ)

Transactional architecture –Support for concurrent transactions –Provides the full ACID compliance of underlying data store –Elephant is thread-safe; can share data store handles Modular Data Store design –The interface to disk storage is abstracted –Currently supports Berkeley DB (direct/fast) and CL-SQL (general/slower) for flexible speed, license issues –Full support for migration between database instances –Migration also provides compaction and garbage collection Runtime database configuration –Class schema redefinition –Add/remove slot indexes –Add/drop objects from the database

PSET Class Indexing Persistent Slots BTree SerializerMemutils/UFFI MOP User API Data Store Interface and Utilities db-bdbdb-postmoderndb-clsqldb-lisp BerkeleyDBPostgreSQLSQLite DCM User API Internal Ready to integrate TBD 3rd party

(defpclass friend () ((name :accessor name :initarg :name) (birthday :initarg :birthday :index t)) => # (make-instance 'friend :name "Carlos" :birthday (encode-birthday '( ))) (make-instance 'friend :name "Adriana" :birthday (encode-birthday '( ))) (make-instance 'friend :name "Zaid" :birthday (encode-birthday '( ))) NOW SOMEONE TRIPS OVER THE POWER CORD... Restart your LISP and do: (get-instances-by-class 'friends) => (# # # ) (map-class-index #'(format t " name: ~A birthdate: ~A~%" (name friend) (birthday friend)) 'friend ‘birthday) name: Carlos birthdate: ( ) name: Zaid birthdate: ( ) name: Adriana birthdate: ( ) => nil Persistent Classes

Persistent References

Transactions

Persistent Sets

BTrees

Fast Binary Object Serializer All numeric types Strings, symbols and pathnames –Full Unicode support Persistent objects Standard objects and structs Arrays, hash-tables and lists

Flexible Indexing Scheme Don't optimize prematurely...index a slot when you need to Functional indexes provide lots of power; you can index objects by the values returned from arbitrary lisp functions Indexes can be ordered by –Any numeric quantity –Lexical ordering of strings, symbols and paths

Broad Platform Support Multiple Lisp environments: –SBCL, ACL, LispWorks, OpenMCL Multiple Platforms: –Linux, Mac, Windows –32 and 64 bit Multiple data store implementations –Berkeley DB and CL-SQL (PostgreSQL and SQLite) –Native PostgreSQL and Lisp data store planned

Multiple Data Stores Berkeley DB: fast, not free for a website unless website is open-source Postgres via CLSQL: slower, liberal license, very solid and well-supported SQLite3 via CLSQL: simple, slowest, good for prototyping Easy to migrate your application between them and more data stores are on the way

The Future A robust, long-term supported 1.0 release planned by end of summer ‘07 –Referential integrity and full support for schema evolution (changing persistent class slots) –Better support for class hierarchies when indexing –Better postgres usage with postmodern –Object query language (and compiler?) Post 1.0 features under consideration –Native LISP data store –Object prevalence or Object management (DCM)

Elephant Pointers – –Available via CVS and tar archive (not asdf-installable today) –Add feature requests and log bug reports to the TRAC project database at Authors –Original Elephant Implementation by Andrew Blumberg and Ben Lee –New Elephant Versions ‘05-’07 by Ian Eslick and Robert Read –Numerous patches, features, examples and significant testing support from a growing user base!