plv8は非常に強力なPGの拡張である、我々は直接shortidが短い接続IDを生成するために使用され、SQLを強化量のJSを使用することができる便利なライブラリです
shortidがNPMモジュールであるので、我々は、使用する方法を必要とする方法が必要です参照パッケージには、我々はplv8ノードモジュールによってこの問題を解決することができ
、以下の簡単なデモです
利用登録は、原則plv8ノードモジュールをshortid
主に高速パケット生成を容易にするために、NPM plv8 PGプラグ(browserifyの処理に基づいて、依存性のプロセスであって、)を用いて使用することができるplv8ノードモジュール
原理は主に含む、実際には比較的簡単です
- JS-依存世代であっ
browserify + bable ノードAPI
- フックに必要と
提供に基づくplv8.start_procのplv8を、私たちはデータセッションセット実行レベルを介して接続された端末シンプルな構成のアプリケーションが必要とする
以下を参照してください。
ALTER DATABASEのPostgresのSET "plv8.start_proc" TO "v8.plv8_init"。
- shortid関数を作成するために基づきplv8呼び出し
、次のように:
CREATE または交換する機能)(shortidをRETURNS テキストASを
$$
CONST shortid = (必要'shortidを');
constの結果= shortid。生む();
戻り値の結果;
$$
言語plv8。
登録shortidデモ
- package.json
{
「名前」:「ノード・plv8」、
"バージョン":"1.0.0"、
"メイン":"app.js"、
"ビン":"app.js"、
"ライセンス":"MIT"、
"依存関係":{
"CUID":"^ 2.1.6"、
"knex":"^ 0.20.1"、
"lodash":"^ 4.17.15"、
"PG":"^ 7.12.1"、
"plv8":"^ 2.1.4"、
"shortid":"^ 2.2.15"、
"UUID":"^ 3.3.3"
}、
"スクリプト":{
「INIT:アプリ」:「ノードアプリ」
}
}
- 登録のためのコールplv8 NPM NPMパッケージモジュール
//セットアップplv8接続
constのPLV8 = (必要'plv8を')
constのknex = 必要('knex')
CONST knexHandle = knex({
クライアント:PG ''、
接続:{
ホスト:"127.0.0.1"、
ユーザー:"postgresの"、
パスワード:"dalong"、
データベース:"postgresの"
}
})
constのplv8 = 新しいPLV8(knexHandle)
//セットアップログリスナー
plv8。(上の'ログ:エラー'、MSG => {
コンソール。エラー(MSG)
})
plv8。({インストール:のModulePath 。必要解決("shortid")、moduleNameの:"shortid"})
。次いで、(()=> {
// evalのいくつかのコード
リターンplv8。評価(()=> {
constのshortid = (必要'shortidを')
リターンshortid。生む()
})
})
。次いで、(結果=> {
コンソール。ログ(結果)
})。キャッチ(ERR => {
コンソール。ログ(ERR)
})
ショート接続サービスモデル
モデルは、主に自動インクリメントidとshortidストレージ比較的単純で、実証するために、呼び出すことによって生成されたshortid
我々はshortid作成した関数を
- データベーステーブル
CREATE TABLEの(shortidsを
ID 整数DEFAULT のnextval('shorids_id_seq' :: regclassデータ)PRIMARY KEY、
shortid テキスト
);
- インデックス----------------------------------------------- --------
CREATE UNIQUE INDEXのshorids_pkey ON shortidsを(識別int4_ops)。
- 挿入
インサートにshortids(shortid)値(shortid())。
- データ効果
説明
shortidアルゴリズム、ランダム性は一般的に多くの困難を推測するために、我々はplv8と強力な機能により、JS、比較的高いことから、簡単に柔軟な短い接続サービスを設計することができます
参考資料
http://knexjs.org/#Installation-pooling
https://github.com/langateam/node-plv8
https://github.com/plv8/plv8
https://github.com/dylang/shortid
ます。https:/ /github.com/rongfengliang/plv8-require-learning