読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

オレオレAerospike環境構築でクエリ文でレコードを追加するまで

Aerospike

Aerospikeがちょっとバズっているっぽいので、Aerospikeで遊んでみることにしました。

ゴール

  • Aerospikeの環境を構築する
  • クエリ文やコマンドを使ってレコードを追加/取得する

環境

とりあえず、以下の環境で遊んでみることにしました。

サーバ側

CentOS 6.6(さくらVPS)

クライアント側

Mac OSX Yosemite

サーバ側環境構築

ページにそってなぞっていけばいいと思います。

www.aerospike.com

# インストール
$ 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を入れます。クライアント側のコマンドラインツール群です。

www.aerospike.com

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

なんとなく理解できたような気はします。