Pythonでサンプルデータを生成してOpenSearchに取り込んでみよう!
OpenSearchを触り始めるときや、新しい機能の検証をしたいとき、「手頃なサンプルデータがないかな?」って思うこと、ありますよね。 というわけで今回は、サンプルデータをPythonでサクッと生成して、Dockerで動いているOpenSearchに投入するまでの手順を紹介していきたいと思います! この記事では、データ生成に用いたPythonスクリプトの要点も解説します。 前回、作成した環境をベー…
OpenSearchを触り始めるときや、新しい機能の検証をしたいとき、「手頃なサンプルデータがないかな?」って思うこと、ありますよね。 というわけで今回は、サンプルデータをPythonでサクッと生成して、Dockerで動いているOpenSearchに投入するまでの手順を紹介していきたいと思います! この記事では、データ生成に用いたPythonスクリプトの要点も解説します。 前回、作成した環境をベー…
「OpenSearch、ちょっと触ってみたいな」と思ったとき、環境構築でつまずくのはもったいない。 自分自身も最近、業務で使用する必要が出てきました。 今回は、docker-compose を使って、コマンド一つでOpenSearchとOpenSearch Dashboardsの環境をサクッと構築する手順を備忘として残しておきます。 使用しているファイルなどはこちらで確認できます。 1. dock…
データベースのパフォーマンスチューニングといえば、まず思い浮かぶのが「インデックス」。正しく使えば劇的にクエリを高速化してくれる、まさに魔法のような仕組みですよね。 でも、「インデックスを貼ったはずなのに、なぜかクエリが遅い…」「むしろインデックスがない方が速かったりする…?」なんて経験はありませんか? 実は、インデックスは万能薬ではなく、使い方を間違えるとパフォーマンスの足を引っ張ってしまうこと…
アプリケーションを開発していると、必ずと言っていいほど「データを削除する」という機能が必要になりますよね。ユーザーがアカウントを消したり、投稿を削除したり。一見、「DELETE文で消すだけでしょ?」と思いがちですが、実はデータの削除方法にはいくつかパターンがあって、それぞれにメリット・デメリットが存在します。 今回は、代表的な3つのデータ削除パターンについて、それぞれの特徴を整理してみました。 1…
はじめに 前の記事では、分散データベースの基本である「ノード」と「シャーディング」について、図書館の例えで解説しました。 この記事では、その知識をベースにして、OpenSearchの具体的な仕組みについて整理していきたいと思います。 OpenSearchと分散データベースの切っても切れない関係 結論から言うと、OpenSearchは、分散データベースの「ノードの追加(複製)」と「シャーディング(分…
はじめに 先日、後輩から「OpenSearchって、どういう仕組みで動いているんですか?」と質問を受けました。 業務で日常的に触っているわけではなかったので、調べ直すことにしました。 「たしか、分散DBと関連があったよな?」というのが調べる前のわたしの認識です。 そこでこの記事では、まず分散データベースの仕組み、特に重要な「ノード」と「シャーディング」について調べたことを、身近な「図書館」を例えに…