質問: 追記 take88さんから指摘がありましたので内容をもっと限定的にしたいと思います。 1、elサーチのデータバックアップはmysqlと同等で安全に不具合や問題なく使えるかどうか 2、全文検索以外の用途で使うのはよくあることか 例 記事のgood数を保存でのelの利用 mysqlのでgood数を保存しユーザーごとにgoodの状態(good済かどうか)を保存しておくとしたら ``` post_id / count 1 / 123 2 / 12 3 / 22 post_id / voted_user_id / voted_date 1 / 2 / 2018-11-02 00:00:00 2 / 2 / 2018-11-02 00:00:01 2 / 3 / 2018-11-02 00:00:02 ``` といった感じになると思いますがこのテーブルにデータの追加、削除、更新、確認を行う場合 Redis等に比べると速度的に遅くなり何千万件とかの大量のデータを扱ったときに問題になってくるのではないかと考えています。 ただ、Redisの場合、永続性の問題でaofに設定した場合通常のredis運用に比べて100倍ほど遅くなるとあり、であればelで同じことをしたらどうなのか?mysqlよりは速度的な問題は解消されRedisと同等のパフォーマンスが出せるのではないか?と考えました。 こういった使い方をelで行うことは問題ない?いい方法?なのでしょうか。 以上、2点についてご教授頂ければと思います。よろしくお願い致します。 > > **はじめの質問** > > 最近、Elasticsearchを触りはじめたのですが これまで全文検索をgroongaやmysqlの全文検索で実装していました。 > > データストアとして安全性や使いやすさ管理のしやすさを考えるとmysqlの方がいいのかなと何となく思っていて > > 通常のデータは一度mysqlの方に保存していき、そこからElasticsearchに流し込むのがベストなのかと考えています。 > > この認識が正しいのかどうか知りたいです。 > > Elasticseachだけでも全く問題ないよというのであれば、バックアップや運用などmysqlの場合と比較してどのように変わるのか? > > また、たとえば集計を行うならredisのsorted > > setを利用したりElasticseachのアグリゲーションを利用した方が速いかと思いますが、データの消失は大丈夫なのかなど不安で。 > > この運用がベストプラクティスじゃないかと思うよというのがあればご教授頂ければと思います。 よろしくお願い致します。 > > >
回答: 伝聞ですが、 Elasticsearch の永続化の能力は、その他の永続化ストレージに比べてそこまで強くなかった、と聞いたことがあります。 また少なくとも、アプリケーションの正規データについては、 mysql などのデータベースに永続化しておくことをおすすめします。ベストプラクティス、というより、 Elasticsearch のみに存在する永続化データで運用している、という話を聞いたことがありません。 (自分が無知なだけかもしれませんが。。)