All, <br><br>Just an FYI that the Buffalo Perl Mongers will be holding their July meeting next Tuesday, July 31st at 7 PM in Bell 242, UB North Campus.<br><br>Topic: Embedded Databases - Ben Bixby<br><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;&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<br><br><br>Feel free to attend, and hopefully we'll see you on Tuesday!<br><br>-Dan<br>