# HG changeset patch # User Shoshi TAMAKI # Date 1276597339 -32400 # Node ID d67370516d8c7646f55e2a797572c9b0a9afb946 # Parent 0b233d5d19443ad13bdd58a50274ada5a5121a04 change filename "Cassandra/CassHash.pm" to "Cassandra/Cass4YukiWiki.pm" diff -r 0b233d5d1944 -r d67370516d8c Cassandra/Cass4YukiWiki.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Cassandra/Cass4YukiWiki.pm Tue Jun 15 19:22:19 2010 +0900 @@ -0,0 +1,150 @@ +#this perl module for using Cassandra DB on YukiWiki +package Cassandra::CassHash; + +use strict; +use warnings; + +use lib './Cassandra/lib'; +use Cassandra::Cassandra; +use Cassandra::Constants; +use Cassandra::Types; + +use Thrift; +use Thrift::BinaryProtocol; +use Thrift::Socket; +use Thrift::BufferedTransport; + +sub TIEHASH +{ + my ($_pkg,$_host,$_port,$_ksp,$_cf,$_row) = @_; + + my $self; + + $self->{_socket} = new Thrift::Socket($_host,$_port); + $self->{_transport} = new Thrift::BufferedTransport($self->{_socket},1024,1024); + $self->{_protocol} = new Thrift::BinaryProtocol($self->{_transport}); + $self->{_client} = new Cassandra::CassandraClient($self->{_protocol}); + $self->{_keyspace} = $_ksp; + $self->{_columnfamily} = $_cf; + $self->{_row} = $_row; + $self->{_consistency_level} = Cassandra::ConsistencyLevel::ONE; + + $self->{_transport}->open(); + + return bless $self,$_pkg; +} + +sub FETCH +{ + my $self = shift; + my $column = shift; + my $client = $self->{_client}; + my $column_path = new Cassandra::ColumnPath(); + $column_path->{column_family} = $self->{_columnfamily}; + $column_path->{super_column} = undef; + $column_path->{column} = $column; + + my $value; + eval{ + $value = $client->get($self->{_keyspace},$self->{_row},$column_path,$self->{_consistency_level}); + }; + if($@){ + return undef; + } + + return $value->{column}->{value}; +} + +sub EXIST +{ + my $self = shift; + my $column = shift; + my $client = $self->{_client}; + my $column_path = new Cassandra::ColumnPath(); + $column_path->{column_family} = $self->{_columnfamily}; + $column_path->{super_column} = undef; + $column_path->{column} = $column; + + my $value; + eval{ + $value = $client->get($self->{_keyspace},$self->{_row},$column_path,$self->{_consistency_level}); + }; + if($@){ + return 0; + } + + return 1; +} + +sub STORE +{ + my ($_self,$_column,$_value) = @_; + + my $column_path = new Cassandra::ColumnPath(); + $column_path->{column_family} = $_self->{_columnfamily}; + $column_path->{super_column} = undef; + $column_path->{column} = $_column; + + my $client = $_self->{_client}; + + $client->insert($_self->{_keyspace},$_self->{_row},$column_path,$_value,time,$_self->{_consistency_level}); + + return $_value; +} + +sub DELETE +{ + my ($_self,$_column) = @_; + my $client = $_self->{_client}; + + my $column_path = new Cassandra::ColumnPath(); + $column_path->{column_family} = $_self->{_columnfamily}; + $column_path->{super_column} = undef; + $column_path->{column} = $_column; + + $client->remove($_self->{_keyspace},$_self->{_row},$column_path,time,$_self->{_consistency_level}); + + return undef; +} + +sub FIRSTKEY +{ + my ($_self) = @_; + + my $client = $_self->{_client}; + + my $column_parent = new Cassandra::ColumnParent(); + $column_parent->{column_family} = $_self->{_columnfamily}; + $column_parent->{super_column} = undef; + + my $slice_range = new Cassandra::SliceRange(); + $slice_range->{start} = ""; + $slice_range->{finish} = ""; + + my $predicate = new Cassandra::SlicePredicate(); + my @list = $predicate->{column_names}; + $predicate->{slice_range} = $slice_range; + + my @result = $client->get_slice($_self->{_keyspace},$_self->{_row},$column_parent,$predicate,$_self->{_consistency_level}); + $_self->{_column_list} = $result[0]; + + my $first_column = shift @{$_self->{_column_list}}; + + return $first_column->{column}->{name}; +} + +sub NEXTKEY +{ + my $_self = shift; + my $next_item = shift @{$_self->{_column_list}}; + return $next_item->{column}->{name}; +} + +sub DESTROY +{ + my $self = shift; + $self->{_transport}->close(); + return 1; +} + +1; diff -r 0b233d5d1944 -r d67370516d8c Cassandra/CassHash.pm --- a/Cassandra/CassHash.pm Sun Jun 06 22:01:03 2010 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,161 +0,0 @@ -#this perl module for using Cassandra DB on YukiWiki -package Cassandra::CassHash; - -use strict; -use warnings; - -use lib './Cassandra/lib'; -use Cassandra::Cassandra; -use Cassandra::Constants; -use Cassandra::Types; - -use Thrift; -use Thrift::BinaryProtocol; -use Thrift::Socket; -use Thrift::BufferedTransport; - - -use Data::Dumper; - -sub TIEHASH -{ - my ($_pkg,$_host,$_port,$_ksp,$_cf,$_row) = @_; - - my $self = { - _socket => undef, - _transport => undef, - _protocol => undef, - _client => undef, - _keyspace => undef, - _columnfamily => undef, - _row => undef, - _column_list => undef - }; - - $self->{_socket} = new Thrift::Socket($_host,$_port); - $self->{_transport} = new Thrift::BufferedTransport($self->{_socket},1024,1024); - $self->{_protocol} = new Thrift::BinaryProtocol($self->{_transport}); - $self->{_client} = new Cassandra::CassandraClient($self->{_protocol}); - $self->{_keyspace} = $_ksp; - $self->{_columnfamily} = $_cf; - $self->{_row} = $_row; - - $self->{_transport}->open(); - - return bless $self,$_pkg; -} - -sub FETCH -{ - my $self = shift; - my $column = shift; - my $client = $self->{_client}; - my $column_path = new Cassandra::ColumnPath(); - $column_path->{column_family} = $self->{_columnfamily}; - $column_path->{super_column} = undef; - $column_path->{column} = $column; - - my $value; - eval{ - $value = $client->get($self->{_keyspace},$self->{_row},$column_path,Cassandra::ConsistencyLevel::ONE); - }; - if($@){ - return undef; - } - - return $value->{column}->{value}; -} - -sub EXIST -{ - my $self = shift; - my $column = shift; - my $client = $self->{_client}; - my $column_path = new Cassandra::ColumnPath(); - $column_path->{column_family} = $self->{_columnfamily}; - $column_path->{super_column} = undef; - $column_path->{column} = $column; - - my $value; - eval{ - $value = $client->get($self->{_keyspace},$self->{_row},$column_path,Cassandra::ConsistencyLevel::ONE); - }; - if($@){ - return 0; - } - - return 1; -} - -sub STORE -{ - my ($_self,$_column,$_value) = @_; - - my $column_path = new Cassandra::ColumnPath(); - $column_path->{column_family} = $_self->{_columnfamily}; - $column_path->{super_column} = undef; - $column_path->{column} = $_column; - - my $client = $_self->{_client}; - - $client->insert($_self->{_keyspace},$_self->{_row},$column_path,$_value,time,Cassandra::ConsistencyLevel::ONE); - - return $_value; -} - -sub DELETE -{ - my ($_self,$_column) = @_; - my $client = $_self->{_client}; - - my $column_path = new Cassandra::ColumnPath(); - $column_path->{column_family} = $_self->{_columnfamily}; - $column_path->{super_column} = undef; - $column_path->{column} = $_column; - - $client->remove($_self->{_keyspace},$_self->{_row},$column_path,time,Cassandra::ConsistencyLevel::ONE); - - return undef; -} - -sub FIRSTKEY -{ - my ($_self) = @_; - - my $client = $_self->{_client}; - - my $column_parent = new Cassandra::ColumnParent(); - $column_parent->{column_family} = $_self->{_columnfamily}; - $column_parent->{super_column} = undef; - - my $slice_range = new Cassandra::SliceRange(); - $slice_range->{start} = ""; - $slice_range->{finish} = ""; - - my $predicate = new Cassandra::SlicePredicate(); - my @list = $predicate->{column_names}; - $predicate->{slice_range} = $slice_range; - - my @result = $client->get_slice($_self->{_keyspace},$_self->{_row},$column_parent,$predicate,Cassandra::ConsistencyLevel::ONE); - @{$_self->{_column_list}} = @{$result[0]}; - - my $first_column = shift @{$_self->{_column_list}}; - - return $first_column->{column}->{name}; -} - -sub NEXTKEY -{ - my $_self = shift; - my $next_item = shift @{$_self->{_column_list}}; - return $next_item->{column}->{name}; -} - -sub DESTROY -{ - my $self = shift; - $self->{_transport}->close(); - return 1; -} - -1; diff -r 0b233d5d1944 -r d67370516d8c wiki.cgi --- a/wiki.cgi Sun Jun 06 22:01:03 2010 +0900 +++ b/wiki.cgi Tue Jun 15 19:22:19 2010 +0900 @@ -37,8 +37,8 @@ # # You MUST modify following '$modifier_...' variables. # -my $modifier_mail = 'hyuki@hyuki.com'; -my $modifier_url = 'http://www.hyuki.com/'; +my $modifier_mail = 'casawiki@example.com'; +my $modifier_url = 'http://yourwebserver/'; my $modifier_name = 'Hiroshi Yuki'; my $modifier_dir_data = '.'; # Your data directory (not URL, but DIRECTORY). my $modifier_url_data = '.'; # Your data URL (not DIRECTORY, but URL). @@ -53,6 +53,9 @@ # #my $modifier_dbtype = 'YukiWikiDB'; my $modifier_dbtype = 'Cassandra::CassHash'; +my $modifier_dbtype_cass_keyspace = 'Keyspace1'; +my $modifier_dbtype_cass_columnfamily = 'YukiWiki'; +my $modifier_dbtype_cass_row = 'Data'; my $modifier_sendmail = ''; # my $modifier_sendmail = '/usr/sbin/sendmail -t -n'; my $modifier_dir_plugin = './plugin'; @@ -831,10 +834,10 @@ } elsif ($modifier_dbtype eq 'AnyDBM_File') { tie(%database, "AnyDBM_File", $dataname, O_RDWR|O_CREAT, 0666) or &print_error("(tie AnyDBM_File) $dataname"); tie(%infobase, "AnyDBM_File", $infoname, O_RDWR|O_CREAT, 0666) or &print_error("(tie AnyDBM_File) $infoname"); - } elsif ($modifier_dbtype eq 'Cassandra::CassHash') { + } elsif ($modifier_dbtype eq 'Cassandra::Cass4YukiWiki') { #use cassandra - tie(%database, "Cassandra::CassHash","localhost",9161,"Keyspace1","Standard1","yukiwiki3") or &print_error("(tie Cassandra::CassHash) $dataname"); - tie(%infobase, "Cassandra::CassHash","localhost",9161,"Keyspace1","Standard1","yukiwiki5") or &print_error("(tie Cassandra::CassHash) $infoname"); + tie(%database, "Cassandra::Cass4YukiWiki","localhost",9161,"YukiWikiKS","YukiWikiCF","database") or &print_error("(tie Cassandra::Cass4YukiWiki) $dataname"); + tie(%infobase, "Cassandra::Cass4YukiWiki","localhost",9161,"YukiWikiKS","YukiWikiCF","infobase") or &print_error("(tie Cassandra::Cass4YukiWiki) $infoname"); } else { tie(%database, "Yuki::YukiWikiDB", $dataname) or &print_error("(tie Yuki::YukiWikiDB) $dataname"); tie(%infobase, "Yuki::YukiWikiDB", $infoname) or &print_error("(tie Yuki::YukiWikiDB) $infoname"); @@ -861,7 +864,7 @@ tie(%diffbase, "AnyDBM_File", $diffname) or &print_error("(tie AnyDBM_File) $diffname"); } elsif ($modifier_dbtype eq 'Cassandra::CassHash') { #use cassandra - tie(%diffbase, "Cassandra::CassHash","localhost",9161,"Keyspace1","Standard1","yukiwiki4") or &print_error("(tie Cassandra::CassHash) $diffname"); + tie(%diffbase, "Cassandra::Cass4YukiWiki","localhost",9161,"YukiWikiKS","YukiWikiCF","diffbase") or &print_error("(tie Cassandra::Cass4YukiWiki) $diffname"); } else { tie(%diffbase, "Yuki::YukiWikiDB", $diffname) or &print_error("(tie Yuki::YukiWikiDB) $diffname"); }