MySQLとTokyoCabinet/TokyoTyrantの命令を比較してみたよ
- May 5th, 2010
- Posted in 開発ツール・技術
- Write comment

自分メモ的にエントリー。MySQLでのこの命令はTokyoCabinet/TokyoTyrantではこう書く、みたいな対比表ですな。
なお、ここで使うTokyoTyrantはphp-tyrantです。
では早速。初期設定とかだいぶはしょってますが、雰囲気は伝わるかと。
なお、前提として、TokyoTyrantでは「$userTable = new TokyoTyrant('localhost',1978);」していると思ってください。
- 全部select
MySQLの場合。
select * from users;
TokyoTyrantの場合。
$query = $userTable->getQuery(); $rs = $query->search();
MySQLの場合。
select * from users where id=5;
TokyoTyrantの場合。
$user = $userTable->get(5);
MySQLの場合。
select * from users where first_name='Gen';
TokyoTyrantの場合。
$query = $userTable->getQuery();
$query->addCond('fist_name', TokyoTyrant::RDBQC_STREQ, 'Gen');
$rs = $query->search();
RDBQC_STREQのところは変数の型やらにあわせて変えてください。以下、参考のこと。
MySQLの場合。
select * from users order by created desc;
TokyoTyrantの場合。
$query = $userTable->getQuery();
$query->setOrder('created', TokyoTyrant::RDBQO_NUMDESC);
$rs = $query->search();
※ PHPの公式マニュアルになぜかsetOrderがないですが、普通に使えます。
MySQLの場合。
select * from users limit 5;
TokyoTyrantの場合。
$query = $userTable->getQuery(); $query->setLimit(5); $rs = $query->search();
※ なお、実際には、select/order by/limitは次のように組み合わせて使うかと。
$query = $userTable->getQuery();
$query->addCond('fist_name', TokyoTyrant::RDBQC_STREQ, 'Gen');
$query->setOrder('created', TokyoTyrant::RDBQO_NUMDESC);
$query->setLimit(5);
$rs = $query->search();
MySQLの場合。
select count(id) from users;
TokyoTyrantの場合。
$query = $userTable->getQuery(); $rs = $query->count();
MySQLの場合。
insert into users (id,name,created) values (null,'taguchi',now());
TokyoTyrantの場合。
$d = array( 'name'=>'taguchi', 'created'=>time() ); $new_id = $userTable->put(null, $d);
MySQLの場合。
update users set name='akiyan' where id=5;
TokyoTyrantの場合。
$user = $userTable->get(5); $d = array( 'name'=>'akiyan', 'created'=>$user['created'] ); $new_id = $userTable->put(5, $d);
MySQLの場合。
delete from users where id=5;
TokyoTyrantの場合。
$user = $userTable->out(5);
MySQLの場合。
drop table users;
TokyoTyrantの場合。
$userTable->vanish();
※ 他の処理はちょっぱやなのにvanish()は遅いので注意。
MySQLの場合。
create table users (id autoincrement, name text, created datetime);
TokyoTyrantの場合。
※ 特に必要ないです。あえて言うなら起動するときのDBファイルの拡張子をTable型にするぐらい?
MySQLの場合。
select distinct name from users;
TokyoTyrantの場合。
※ (簡単には)できません。
MySQLの場合。
joinなんとか!
TokyoTyrantの場合。
※ (簡単には)できません。
※ (簡単には)できま(ry
以上ですかね・・・かな?なにか間違いとかあったら優しくご指摘ください!
ちなみにTokyoCabinet/TokyoTyrantの公式サイトはこちら。


No comments yet.