Pandra: librería PHP para trabajar con Cassandra

Publicado el 25 marzo 2010 por Displaynone

Para aquellos que necesiten Cassandra en sus proyectos o quieran trastear con él, les vendrá muy bien esta librería basada en CRUD. Soporta las estructuras de datos ofrecida por Cassandra y sus tipos de datos:

  • Column: clave-valor y el timestamp
  • Column Family: un array asociativo que contiene columnas, el cual sólo debe tener un clave paterna
  • Super Column: practicamente igual que la Column Family, sin embargo tiene una Super Column Family como padre. Puede haber varias Super Columns para una clave
  • Super Column Family: contenedor de Super Column
  • Key ID: clave única
  • Key Space: nivel más alto, sería el equivalente a la base de datos

Un ejemplo de código sería el siguiente:

class Address extends PandraSuperColumn {
    public function init() {
        $this->addColumn('city', 'string');
        $this->addColumn('street', 'string');
        $this->addColumn('zip', 'int');
    }
}
 
class Addresses extends PandraSuperColumnFamily {
    public function init() {
        $this->setKeySpace('Keyspace1');
        $this->setName('Super1');
        $this->addSuper(new Address('homeAddress'));
        $this->addSuper(new Address('workAddress'));
    }
}
 
$keyID = 'kenlogin';
 
$addrs = new Addresses();
$addrs->setKeyID($keyID);
 
// home address
$homeAddr = $addrs->getColumn('homeAddress');
$homeAddr->setColumn('city', 'san francisco');
$homeAddr->setColumn('street', '1234 x street');
$homeAddr->setColumn('zip', '94107');
 
// work address
$workAddr = $addrs->getColumn('workAddress');
$workAddr->setColumn('city', 'san jose');
$workAddr->setColumn('street', '9876 y drive');
 
// custom labelled supercolumn
$customAddr = new Address(''customAddress');
$customAddr->setColumn('city', 'another city');
$addrs->addSuper($customAddr);
 
// Saving via Column Family
$addrs->save();
 
// Saving via Super Column,
$customAddr->setColumn('city', 'another city');
$customAddr->save(); 

Pandra

Pandra supports data structures up to the 5th dimensionality provided by Cassandra. From the bottom up, supported data types, their classful implementation name and their (conceptual) RDBMS analogues consist of the following -