AnyEvent::CouchDB is a non-blocking CouchDB client implemented on top of the
AnyEvent framework. Using this library will give you the ability to run many
CouchDB requests asynchronously, and it was intended to be used within a
Coro+AnyEvent environment. However, it can also be used synchronously if you
want.
Its API is based on jquery.couch.js, but we've adapted the API slightly so that
it makes sense in an asynchronous Perl environment.
Asyncronous memcached/memcachedb client for AnyEvent framework
AnyEvent::Redis is a non-blocking (event-driven) Redis client.
Sqitch is a database change management application. What makes it
different from your typical migration-style approaches? A few things:
## No opinions
Sqitch is not integrated with any framework, ORM, or platform.
Rather, it is a standalone change management system with no opinions
about your database engine, application framework, or development
environment.
## Native scripting
Changes are implemented as scripts native to your selected database
engine. Writing a PostgreSQL application? Write SQL scripts for
psql. Writing a MySQL-backed app? Write SQL scripts for mysql.
## Dependency resolution
Database changes may declare dependencies on other changes -- even
on changes from other Sqitch projects. This ensures proper order
of execution, even when you've committed changes to your VCS
out-of-order.
## No numbering
Change deployment is managed by maintaining a plan file. As such,
there is no need to number your changes, although you can if you
want. Sqitch doesn't much care how you name your changes.
## Iterative development
Up until you tag and release your application, you can modify your
change deployment scripts as often as you like. They're not locked
in just because they've been committed to your VCS. This allows you
to take an iterative approach to developing your database schema.
Or, better, you can do test-driven database development.
This module implements a caching layer around BerkeleyDB for object persistence.
It implements the basic methods necessary to add, retrieve, and remove objects.
The main advantage over other caching modules is performance. I've attempted to
stick with a Cache::Cache-like interface as much as possible, though it may
differ here and there.
This is the perl5 interface to CDB.
Very useful for people who would like to export information from an SQL type
database directly into a CDB file via $cdb->insert in a perl script.
The DBD::CSV module is yet another driver for the DBI (Database
independent interface for Perl). This one is based on the SQL
"engine" SQL::Statement and the abstract DBI driver DBD::File
and implements access to so-called CSV files (Comma separated
values).
Class::DBI provides a convenient abstraction layer to a database.
It not only provides a simple database to object mapping layer, but can
be used to implement several higher order database functions (triggers,
referential integrity, cascading delete etc.), at the application level,
rather than at the database.
This is particularly useful when using a database which doesn't support
these (such as MySQL), or when you would like your code to be portable
across multiple databases which might implement these things in
different ways.
The DBI interface allows perl programs to use DBD (Database Definition)
drivers with a common set of routines. A program can then (theoretically)
change from using mSQL to Oracle (for example) without changing the entire
program around.
This DBI interface is not yet fully specified. The current development
work is focused on writing drivers, such as DBD::Oracle, which also
implement emulations of old perl4 database interfaces, e.g., oraperl.
This strategy enables the DBI and drivers to serve a useful purpose
whilst allowing the real interface to evolve with experience behind the
emulation interface.
Allows for any blessed HASH object to be populated from a database, by
describing table relationships to each method.