Mediatechnologie Leerjaar 3 Periode 3

Beoordeling DBT periode 3

- Beschrijf individueel welke rol Cassandra speelt binnen de website Facebook. Zoek daarvoor informatie bij elkaar en betrek deze note van Facebook erbij: http://www.facebook.com/note.php?note_id=24413138919

- Beschrijf ook de verschillen tussen de functionele eisen van Cassandra en relateer ze aan de ACID eigenschappen: http://en.wikipedia.org/wiki/ACID van relationele databases zoals MySQL.

Beschrijf de stappen die jullie gezet hebben om zelf met cassandra te expirimenteren 
- tegen welke problemen ben je opgelopen?
- hoe heb je deze opgelost / proberen op te lossen?

Lever het verslag in per e-mail aan t.boose@rocleiden.nl met als subject: "Cassandra opdracht" <naam> ", klas W3A Periode 3 2010/2011" uiterlijk op donderdag 24 maart.

Je verslag bestaat minimaal uit 2 pagina's zelf geschreven eerlijke text aangevuld met een bronvermelding en illustraties waar nodig.


Optie cassandra NoSQL:
Van de website: http://cassandra.apache.org/

The Apache Cassandra Project develops a highly scalable second-generation distributed database, bringing together Dynamo's fully distributed design and Bigtable'sColumnFamily-based data model.

Cassandra was open sourced by Facebook in 2008, and is now developed by Apache committers and contributors from many companies.


Cassandra heeft een uitgebreide wiki met uitleg voor een startende gebruiker tot geavanceerde toepassingen:

http://wiki.apache.org/cassandra/GettingStarted

Als voorbeeld van een toepassing kun je proberen om twisandra aan de praat te krijgen.
https://github.com/ericflo/twissandra


Les 1 Intro:


Jullie willen dus sneller internet op de nieuwe energie, een koelkast, magnetron en minder rommel als jullie binnen komen.

Deze beschrijving, gevonden op "fourkichens.com" vertelt hoe je Cassandra samen met PHP laat werken.

Les 2 Demo:

Ik laat vandaag cassandra in een cluster zien. 


Deze link: https://wiki.fourkitchens.com/display/PF/Using+Cassandra+with+PHP

Initial setup

  1. Download and extract the Thrift tarball
  2. Download and extract the Cassandra tarball

Building the PHP client

  1. Change to the thrift directory
  2. Install build dependencies.
    • On Ubuntu:
      sudo apt-get install libboost-dev automake libtool flex bison pkg-config g++
      
    • On RHEL 5 or CentOS 5:
      sudo yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel
      
  3. Configure and build Thrift:
    ./configure
    make
    
  4. Build the PHP Thrift interface for Cassandra:
    ./compiler/cpp/thrift -gen php ../PATH-TO-CASSANDRA/interface/cassandra.thrift
    
  5. Copy the include files to a useful place (per the Cassandra "Getting Started" guide):
    sudo mkdir -p /usr/share/php/Thrift
    sudo cp -R gen-php/ /usr/share/php/Thrift/packages/
    sudo cp -R lib/php/src/* /usr/share/php/Thrift/
    

Building and installing the native PHP extension

Installing and using the native PHP extension provides approximately a ten-fold performance boost on writing data.
  1. Change to PATH-TO-THRIFT/lib/php/src/ext/thrift_protocol.
  2. Install support for building PHP extensions:
    • On Ubuntu:
      sudo apt-get install php5-dev
      
    • On CentOS:
      sudo yum install php-devel
      
  3. Build the extension:
    phpize
    ./configure --enable-thrift_protocol
    make
    
  4. Copy the extension's .so to the extensions directory.
    • On Ubuntu:
      sudo cp modules/thrift_protocol.so /usr/lib/php5/20060613/
      
    • On 64-bit CentOS:
      sudo cp modules/thrift_protocol.so /usr/lib64/php/modules/
      
  5. Enable the module.
    • On Ubuntu:
      /etc/php5/conf.d/thrift_protocol.ini
      extension=thrift_protocol.so
      
    • On CentOS:
      /etc/php.d/thrift_protocol.ini
      extension=thrift_protocol.so
      
  6. Verify installation:
    php -i | grep -v "PWD" | grep "thrift_protocol"
    
  7. Restart Apache.
    • On Ubuntu:
      sudo /etc/init.d/apache2 restart
      
    • On CentOS:
      sudo /etc/init.d/httpd restart
      
  8. Ensure that the PHP is using TBinaryProtocolAccelerated and not TBinaryProtocol as the protocol.

Starting the server for development use

  1. Change to the Cassandra directory.
  2. Install the Sun Java runtime.
  3. Give Cassandra the permissions it needs:
    WHOAMI=`whoami`
    sudo mkdir /var/log/cassandra/
    sudo chown $WHOAMI /var/log/cassandra/
    sudo mkdir /var/lib/cassandra
    sudo chown $WHOAMI /var/lib/cassandra/
    
  4. Start Cassandra in the foreground:
    ./bin/cassandra -f
    

Checking the connection

  1. Copy in the PHP from the Cassandra client examples page to /var/www/cassandra-test.php.
  2. Visit http://localhost/cassandra-test.php in the browser.
  3. On the first load, the array output should be empty. On the second, there should be content.
Comments