ワア二年ぶりだ。

ご無沙汰しております、ぶたです。

ブヒィ。



1. 突然のウェブシステム設計

あれ私スマホアプリ...あれ...。

ハイ。案件の都合でウェブシステムの設計を担当してます。
企画担当のエンジニアと運用スタッフにヒアリングを行って、要件をまとめて
チーフエンジニアとご相談しながら「どうやって実装するか」を決めて
具体的な設計書を起こすところまでが私の担当です。

レイヤー上位の仕事だから楽かと思いきや、要件の実装に必要なのは
まさかのElasticsearch。
初心者どころか知識ゼロです。

すべての情報は主観に基づく解釈が含まれています。
有識者の方、間違いがあればご指摘下さい。


2.Elasticsearchとは

Elasticsearch、RDBMSとはだいぶ考え方が違うもので
あらゆるカラムにインデックスが貼られた、高速検索専用の何かっぽい。
クラスタで管理されているから検索の効率が非常に良いんだとか。

具体的な使い方としては、まずindex(DBみたいなもの)を定義する。
その時、Type(テーブルのようなもの)の中にFields(カラム)とDataType(型)をmappingします。
で、随時Document(レコード)を挿入していく...という流れ。
indexの定義の仕方はjsonファイルね。


3.Elasticsearch用にテーブルを設計し直す

もともとRDBMSで考えていたものをElasticsearchに最適化します。

いわゆる主キーは***_idとして持っておく。それとは別に_idという連番?が使える。

検索時の条件になり得るもの、検索結果として表示するものはすべてTypeの中に入れる。

Fieldの追加など、テーブルのカラムを拡張する必要が出てきた場合は
インデックスから定義し直すか、1つずつFieldをaddしていく必要があるので
本当にこの定義で足りるのか?を慎重に設計したい。



今わかってるのはここまで!

こちらのブログを参考にしました
http://code46.hatenablog.com/entry/2014/01/21/115620
http://blog.shibayu36.org/entry/2016/08/31/110000