Just a reminder that the Buffalo Perl Mongers will be having their July meeting tonight.<br><br>Date: July 31st, 2007<br>Time: 7 PM<br>Location: 242 Bell Hall, UB North Campus<br><br>Topic: Embedded Databases - Ben Bixby<br>Agenda:<br><br>Intro<br>&nbsp;&nbsp;&nbsp; What is an embedded database?<br>&nbsp;&nbsp;&nbsp; How do they work<br>&nbsp;&nbsp;&nbsp; What are the advantages<br>&nbsp;&nbsp;&nbsp; What are the disadvantages<br>&nbsp;&nbsp;&nbsp; Why/When would you want to use one<br><br>Some available embedded databases<br>&nbsp;&nbsp;&nbsp; BerkeleyDB<br>&nbsp;&nbsp;&nbsp; Cache::FastMmap<br>&nbsp;&nbsp;&nbsp; Embedded MySQL<br>&nbsp;&nbsp;&nbsp; File System<br>&nbsp;&nbsp;&nbsp; GDBM_File<br>&nbsp;&nbsp;&nbsp; SQLite<br><br>Using embedded databases<br>&nbsp;&nbsp;&nbsp; Code should be abstract<br>&nbsp;&nbsp;&nbsp; Might want to swap database type<br>&nbsp;&nbsp;&nbsp; Some are better than others for certain purposes<br>&nbsp;&nbsp;&nbsp;
 Performance<br>&nbsp;&nbsp;&nbsp; Correctness<br>&nbsp;&nbsp;&nbsp; Concurrency<br><br>Abstract embedded database code<br>&nbsp;&nbsp;&nbsp; Data Access Layer (DAL)<br>&nbsp;&nbsp;&nbsp; init<br>&nbsp;&nbsp;&nbsp; get<br>&nbsp;&nbsp;&nbsp; set<br>&nbsp;&nbsp;&nbsp; list<br>&nbsp;&nbsp;&nbsp; remove<br><br>Correctness<br>&nbsp;&nbsp;&nbsp; Does the database do what you need how you need<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LRU<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Automatic resizing<br>&nbsp;&nbsp;&nbsp; Does it work as<br>&nbsp;expected<br><br>Concurrency<br>&nbsp;&nbsp;&nbsp; Special considerations for a multi-process environment<br>&nbsp;&nbsp;&nbsp; Readers<br>&nbsp;&nbsp;&nbsp; Writers<br>&nbsp;&nbsp;&nbsp; Locking<br>&nbsp;&nbsp;&nbsp; Synchronization<br><br>Performance comparison<br>&nbsp;&nbsp;&nbsp; Is it fast enough for your application<br>&nbsp;&nbsp;&nbsp; Benchmarking<br><br>Conclusion<br>&nbsp;&nbsp;&nbsp; Get requirements
 straight<br>&nbsp;&nbsp;&nbsp; Reduce pain