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
(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) => (# # # ) (mapclass #'(format t " name: ~A birthdate: ~A~%" (name friend) (birthday friend)) 'friend) name: Carlos birthdate: ( ) name: Adriana birthdate: ( ) name: Zaid birthdate: ( ) => (# # # ) Persistent Classes
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
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 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 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 Don't optimize prematurely...index a slot when you need to Functional indexes provide lots of power
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,.....