Aerospikeがちょっとバズっているっぽいので、Aerospikeで遊んでみることにしました。
ゴール
- Aerospikeの環境を構築する
- クエリ文やコマンドを使ってレコードを追加/取得する
環境
とりあえず、以下の環境で遊んでみることにしました。
サーバ側
CentOS 6.6(さくらVPS)
クライアント側
Mac OSX Yosemite
サーバ側環境構築
ページにそってなぞっていけばいいと思います。
# インストール $ wget -O aerospike.tgz 'http://aerospike.com/download/server/latest/artifact/el6' $ tar -xvf aerospike.tgz $ cd aerospike-server-community-*-el6 sudo ./asinstall # will install the .rpm packages $ sudo vi /etc/aerospike/aerospike.conf
aerospike.confに以下を追加して、namespaceを追加する
namespace user_profile { replication-factor 2 memory-size 4G default-ttl 30d # 30 days, use 0 to never expire/evict. storage-engine memory }
雑な理解ですが、
- namespace → データベース
- set → テーブル
- record → レコード
という感じでいいかなと思いました。
# 起動 $ sudo service aerospike start && \ sudo tail -f /var/log/aerospike/aerospike.log | grep cake # wait for it. "service ready: soon there will be cake!"
クライアント側環境構築
Aerospike toolsを入れます。クライアント側のコマンドラインツール群です。
Macに合わせて入れます。
レコードを入れる
aqlコマンドを使うパターンと、ascliを使うパターンの2つあります。
aqlコマンドを使ってレコードを入れる。
aql -h サーバ側のIP/ホスト名
インデックスを貼る
setとかは事前に設定する必要はないけど、インデックスを貼る必要はあります。
CREATE INDEX ix1 ON user_profile.west (last_activity) NUMERIC
レコードを追加したり、SELECT文を投げたり
INSERT INTO user_profile.west (PK,location,last_activity) VALUES ('cookie_100','MA',342) INSERT INTO user_profile.west (PK,location,last_activity) VALUES ('cookie_101','AZ',345) INSERT INTO user_profile.west (PK,location,last_activity) VALUES ('cookie_102','CA',345) INSERT INTO user_profile.west (PK,location,last_activity) VALUES ('cookie_103','AL',340) INSERT INTO user_profile.west (PK,location,last_activity) VALUES ('cookie_104','TX',347) INSERT INTO user_profile.west (PK,location,last_activity) VALUES ('cookie_105','MA',323) # select SELECT * FROM user_profile.west WHERE last_activity BETWEEN 340 AND 345
ascliによるレコードの追加と取得
$ ascli -h サーバ側のIP/ホスト名 put user_profile west cookie_105 '{"location": "JN", "last_activity": 400}' $ ascli -h サーバ側のIP/ホスト名 get user_profile west cookie_105
なんとなく理解できたような気はします。