Alchemy-Database入門

11147 ワード

Alchemy Databaseは、NoSQLサーバRedisの上に構築された低遅延、高TPSのSQLデータベースです.深さ埋め込みLua言語によりデータストレージ側のスクリプト開発を提供する.構造化されていないデータストレージをサポートし、パフォーマンスが非常に優れています.シングルコアの3 G CPUでPC 3200(400 MHZ)を使用した機器でのテスト結果:●95 K INSERT/sec,95 K SELECT/sec,90 K UPDATE/sec,100 K DELETE/sec●Range Queries returning 10 rows:40 K/sec●2 Table Joins returning 10 rows:20 K/sec●Lua script performing read and write:85 K/sec
公式サイトは次のとおりです.https://code.google.com/archive/p/alchemydatabase/
1.Alchemyデータベースのインストール
ソースのダウンロード:https://github.com/JakSprats/Alchemy-Databaseインストールは簡単で、直接makeでいいです.インストールが終わったら、redis/srcディレクトリに入ります.中にはalchemy-serverとalchemy-cliツールがあります.redisのserverとclientと似ています.redisが以前にインストールされている場合は、alchemy-serverの起動ポートを変更します.そしてalchemy-cliでalchemy-serverに接続できます.
2.alchemy-serverの起動
コマンド:./alchemy-server ../redis.confは、デフォルトポート6379が占有する場合、redisを変更する必要があることに注意する.confのポート番号.
3.alchemyがサポートするSQLデータ型
現在alchemyがサポートしているSQLデータ型はUNSIGNED INT,UNSIGNED LONG,U 128(128 bit INTEGER),TEXT,and FLOATである.Datetimeデータ型はUNSIGNED INT/LONGまたはFLOATで表される.TEXTは変数長の記憶と比較を利用してmysql中の各種のデータ型に適応することができて、VARCHAR、CHAR、BLOBなどを含みます.
4.alchemyがサポートするSQL
Create/Drop Operations: ● CREATE TABLE customer
(id INT, group_id INT, name TEXT, phone text, age INT);CREATE INDEX i_cg ON customer (group_id);CREATE INDEX i_cga ON customer (group_id, age);CREATE UNIQUE INDEX iu_cg ON customer (group_id);DROP TABLE customer ● DROP INDEX cust_group_ind ● DESC customer ● DUMP customer ● DUMP customer TO MYSQL ● DUMP customer TO FILE fname ● ALTER TABLE customer ADD COLUMN state INT Single Row Operations ● INSERT INTO customer VALUES (1,300,’John Doe’,’301-933-1891’,30);SELECT group_id, phone FROM customer WHERE id = 1DELETE FROM customer WHERE id = 1UPDATE customer SET phone = ‘703-933-1891’, group_id = 4 WHERE id = 1INSERT INTO customer VALUES (1,300,’John Doe’,’301-933-1891’,30) RETURN SIZE;REPLACE INTO customer VALUES (1,300,’John Doe’,’703-387-7777’,30) ● INSERT INTO customer VALUES (1,300,’John Doe’,’703-387-7777’,30) ON DUPLICATE KEY UPDATE SET phone = ’703-387-7777’ ● INSERT INTO customer VALUES (1,300,’John Doe’,’301-933-1891’,30) (2,300,’Jane Smith’,’301-946-2222’,22) (1,300,’John Doe’,’202-933-444’,55) ● INSERT INTO customer (id, name, phone) VALUES (1,’John Doe’,’301-933-1891’); 
Index Operations
  ● SELECT group_id, phone FROM customer WHERE group_id BETWEEN 300 AND 400 [ORDER BY column LIMIT n OFFSET m] ● SELECT group_id, phone FROM customer WHERE group_id IN (300, 301, 307, 311) [ORDER BY column LIMIT n OFFSET m] ● DELETE FROM customer WHERE group_id BETWEEN 300 AND 400 [ORDER BY column LIMIT n OFFSET m] ● UPDATE customer SET phone = ‘703-933-1891’, group_id = 4 WHERE group_id = 300 [ORDER BY column LIMIT n OFFSET m] JOINS

Alchemyは現在join操作をサポートしていませんが、テーブルを接続することでjoinを実現できます.
SELECT c.name, g.slogan FROM customer c, group g WHERE c.group_id = g.id AND g.id BETWEEN 300 AND 400 [ORDER BY table.column LIMIT n OFFSET m]

その他は公式サイトを参照してください.https://code.google.com/archive/p/alchemydatabase/wikis/CommandReference.wiki#Beyond_SQL
5.alchemyクライアント使用
alchemy-cliを起動します.ここには6800ポートが接続されています.4つのSQLを実行します.
CREATE TABLE customer (id INT, group_id INT, name TEXT, phone text, age INT);
INSERT INTO customer VALUES (1,300,'John Doe','301-933-1891',30);
SELECT group_id, phone FROM customer WHERE id = 1;
UPDATE customer SET phone = '703-933-1891', group_id = 4 WHERE id = 1;

6.REST APIのクライアント
alchemy 0から2から、AlchemyDBのクライアントは、httpプロトコルによってserverにアクセスするREST APIに切り替えられました.たとえば、次のようにします.http://server:ip/GET/XYZで行ないます.sql文のスペースの代わりに/記号を使用します.
例:http://192.168.144.120:6800/SELECT/*/FROM/customer/WHERE/id=1
*2
$30
id, group_id, name, phone, age
$31
1,4,'JohnDoe','703-933-1891',30

最初の行はデータの行数を返し、例では2つの行(フィールド名、値)を返します.次の2つの行ごとに、行の文字数と行の値が返されます.
具体的には、公式文書を参照してください.https://code.google.com/archive/p/alchemydatabase/wikis/RestAPI.wiki