elephant easy persistence n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Elephant: Easy Persistence PowerPoint Presentation
Download Presentation
Elephant: Easy Persistence

Loading in 2 Seconds...

play fullscreen
1 / 8

Elephant: Easy Persistence - PowerPoint PPT Presentation


  • 68 Views
  • Uploaded on

Elephant: Easy Persistence. No ORMs at all Very easy to use APIs: btree, persistent sets, and CLOS integration Dynamic index creation on slots Functional indexes. Persistent Classes. (defpclass friend () ((name :accessor name :initarg :name) (birthday :initarg :birthday))

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Elephant: Easy Persistence' - zea


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
elephant easy persistence
Elephant: Easy Persistence
  • No ORMs at all
  • Very easy to use APIs: btree, persistent sets, and CLOS integration
  • Dynamic index creation on slots
  • Functional indexes
slide2

Persistent Classes

(defpclass friend ()

((name :accessor name :initarg :name)

(birthday :initarg :birthday))

(:index t))

=> #<PERSISTENT-METACLASS FRIEND>

(make-instance 'friend :name "Carlos" :birthday (encode-birthday '(1 1 1972)))

(make-instance 'friend :name "Adriana" :birthday (encode-birthday '(24 4 1980)))

(make-instance 'friend :name "Zaid" :birthday (encode-birthday '(14 8 1976)))

NOW SOMEONE TRIPS OVER THE POWER CORD...

Restart your LISP and do:

(get-instances-by-class 'friends)

=> (#<Carlos> #<Adriana> #<Zaid>)

(mapclass #'(format t " name: ~A birthdate: ~A~%" (name friend) (birthday friend)) 'friend)

name: Carlos birthdate: (1 1 1972)

name: Adriana birthdate: (24 4 1980)

name: Zaid birthdate: (14 8 1976)

=> (#<Carlos> #<Adriana> #<Zaid>)

slide3

User API

PersistentSlots

PSET

ClassIndexing

DCM

BTree

MOP

Serializer

Memutils/UFFI

Data Store Interface and Utilities

db-bdb

db-postmodern

db-clsql

db-lisp

BerkeleyDB

PostgreSQL

SQLite

3rd party

User API

Ready to integrate

Internal

TBD

multi platfom
Multi-platfom
  • Supported by LISP: SBCL, ACL, LispWorks, OpenMCL
  • Different Oses: Linux, Mac, Windows
  • Works on 64 bit architectures
  • Repository flexibility
late binding of repository decisions
Late binding of repository decisions
  • Multiple Repositories (3 tested, but more should be possible via CL-SQL)
  • Tested migration between repositories
  • Repository usage and migration flexible enough that engineering decisions about repos are independent of Elephant
repositories
Repositories
  • BDB: fast, not free for a website unless open-source
  • Postgres: slower, liberal license, very solid and well-supported
  • SQLite3: fast, good for protyping
  • Start on X, move to Y
indexing decisions changeable
Indexing decisions changeable
  • Don't optimize prematurely...index a slot when you need to
  • Functional indexes provide lots of power
the future
The Future
  • Schema changes (changing a persistent classes slots) should be improved
  • Pure-lisp solution would allow prototyping (and maybe more) with even less installation hassle
  • Improving the serializer improves performance on every repository
  • Better postgres usage with postmodern
  • Query languages, Prevalence, .....