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

ほんじゃら堂

めんどくさい仕事をラクにする作業自動化レシピ集

jQueryUIのsortableウィジェットでリストのソート順を管理する

IT系・技術系 Javascript jquery

f:id:piro_suke:20161207003918j:plain

例えば商品のランキングを手動で管理する場合、

商品データに並び順のようなものをつけてその順序で表示すると思うのだけど、

並び順を設定するUIをどのように作るのが良いか。

近いうちに作る機会がありそうなので、考えてみる。

ReactやVue.jsを使う機会はなさそうなので、jQueryベースで。

続きを読む

PostgreSQLのJSONB型カラム内のキーで一意制約&UPSERT

IT系・技術系 postgresql sql

f:id:piro_suke:20161204023310j:plain

Node.jsとPostgreSQLを使ってるなら、

もうデータは全部JSON形式で管理した方が楽なんじゃないの、

ということでPostgreSQLのJSON型カラムについて色々調べている。

JSON/JSONB型カラムの基本的な使い方についてはちょっと前に書いた。

blog.honjala.net

今回はJSONB型カラムに一意制約をつけたり、

それを利用してUPSERT処理を行う方法について調べたことを書く。

続きを読む

PostgreSQLでのUPSERT(INSERT or UPDATE)処理を検証する

IT系・技術系 postgresql clojure sql データ生成

f:id:piro_suke:20161202005524j:plain

PostgreSQLでUPSERT(データがあればUPDATEしてなければINSERT)する

方法について調べたところ、いくつか書き方があるようだ。

UPSERT処理で気になるのは同時実行された際に

重複登録されたり重複エラーが発生しないかどうかなので、

その観点で下記の4パターンの方法を検証してみる。

  1. UPDATEしてNOT FOUNDならINSERT
  2. CTEでUPDATEしてNOT EXISTSならINSERT
  3. INSERT ON CONFLICT DO UPDATE
  4. INSERTしてUNIQUE_VIOLATION EXCEPTIONならUPDATE
続きを読む

PostgreSQLでpg_bigmを使って中間一致like検索を高速化する

IT系・技術系 postgresql sql

f:id:piro_suke:20161119021025j:plain

昨日書いた下記記事の続き。

blog.honjala.net

全角半角大文字小文字ひらがなカタカナを区別せず高速検索できるようには

なったのだけど、肝心のlike検索でインデックスが使えず

遅いままだったので、pg_bigmを導入してこれを解決する。

pg_bigmは簡単に言うと日本語の中間一致like検索でインデックスを

使えるようにしてくれるPostgreSQL用モジュール。

本家サイトはこちら:

pg_bigm

続きを読む

PostgreSQLで全角半角大文字小文字ひらがなカタカナを区別せず検索する

IT系・技術系 postgresql sql

f:id:piro_suke:20161118011707j:plain

仕事で必要となったので調査してみた。

こういった区別なし検索を実装する方法としてパッと思いつくのは、

あらかじめ検索対象となるカラムの検索用カラムを用意して、

データ変更時にトリガーで

元カラムの内容を半角小文字英数字カタカナに変換したデータが入るようにしておき、

検索時はその検索用カラムを使用する、という方法。

これはめんどくさそうだ。

続きを読む

PostgreSQLでテスト用組み合わせパターンデータを作成する

IT系・技術系 postgresql sql データ生成

f:id:piro_suke:20161110013537j:plain

先日書いたgenerate_series関数を使用したテストデータ生成の続き。

blog.honjala.net

どうせテストデータを作成するなら、

連番だけでなく、必要なパターンの組み合わせデータを生成したい。

ちょっと前にPythonやClojureを使った組み合わせデータ作成のスクリプトを

作成した時は専用のライブラリを使用したのだけど、

blog.honjala.net

PostgreSQLのgenerate_series関数とjoinを組み合わせたら

ぐっと簡単に実現できた。

続きを読む

JSONB型カラムでPostgreSQLをスキーマレスに使ってみる

IT系・技術系 postgresql sql

f:id:piro_suke:20161104012901j:plain

PostgreSQL9.2以降のバージョンではjson型/jsonb型カラムが使える。

ちょっと特殊な記法を使うけど、

json/jsonbデータ内のキーをDBのカラムと同様に使えるようになるので、

スキーマレスDBのように同じテーブル内のレコードで

異なるデータ構成を持たせることができるようになる。

役に立ちそうなので触ってみた。

続きを読む