カテゴリー:DB

blog-image

Pythonでサンプルデータを生成してOpenSearchに取り込んでみよう!

OpenSearchを触り始めるときや、新しい機能の検証をしたいとき、「手頃なサンプルデータがないかな?」って思うこと、ありますよね。 というわけで今回は、サンプルデータをPythonでサクッと生成して、Dockerで動いているOpenSearchに投入するまでの手順を紹介していきたいと思います! この記事では、データ生成に用いたPythonスクリプトの要点も解説します。 前回、作成した環境をベー…

Read More

Docker Composeで爆速構築!OpenSearch + Dashboards環境構築手順

「OpenSearch、ちょっと触ってみたいな」と思ったとき、環境構築でつまずくのはもったいない。 自分自身も最近、業務で使用する必要が出てきました。 今回は、docker-compose を使って、コマンド一つでOpenSearchとOpenSearch Dashboardsの環境をサクッと構築する手順を備忘として残しておきます。 使用しているファイルなどはこちらで確認できます。 1. dock…

Read More

blog-image

【DB】インデックスがあるのにクエリが遅い?よくある落とし穴と対策

データベースのパフォーマンスチューニングといえば、まず思い浮かぶのが「インデックス」。正しく使えば劇的にクエリを高速化してくれる、まさに魔法のような仕組みですよね。 でも、「インデックスを貼ったはずなのに、なぜかクエリが遅い…」「むしろインデックスがない方が速かったりする…?」なんて経験はありませんか? 実は、インデックスは万能薬ではなく、使い方を間違えるとパフォーマンスの足を引っ張ってしまうこと…

Read More

blog-image

DBのデータ削除、どうしてる?3つのパターンを整理

アプリケーションを開発していると、必ずと言っていいほど「データを削除する」という機能が必要になりますよね。ユーザーがアカウントを消したり、投稿を削除したり。一見、「DELETE文で消すだけでしょ?」と思いがちですが、実はデータの削除方法にはいくつかパターンがあって、それぞれにメリット・デメリットが存在します。 今回は、代表的な3つのデータ削除パターンについて、それぞれの特徴を整理してみました。 1…

Read More

blog-image

OpenSearchの仕組みを理解【ノードとシャーディングの知識を応用】

はじめに 前の記事では、分散データベースの基本である「ノード」と「シャーディング」について、図書館の例えで解説しました。 この記事では、その知識をベースにして、OpenSearchの具体的な仕組みについて整理していきたいと思います。 OpenSearchと分散データベースの切っても切れない関係 結論から言うと、OpenSearchは、分散データベースの「ノードの追加(複製)」と「シャーディング(分…

Read More

blog-image

【分散DB入門】ノードとシャーディングを図書館の例えで理解する

はじめに 先日、後輩から「OpenSearchって、どういう仕組みで動いているんですか?」と質問を受けました。 業務で日常的に触っているわけではなかったので、調べ直すことにしました。 「たしか、分散DBと関連があったよな?」というのが調べる前のわたしの認識です。 そこでこの記事では、まず分散データベースの仕組み、特に重要な「ノード」と「シャーディング」について調べたことを、身近な「図書館」を例えに…

Read More

DjangoのORMを使用したときの集計関数の使用方法

SQL内で集計をおこなう際に、SQLであれば、「MAX」や「MIN」などと合わせて、「group by」を指定することがある。 ORM使用時は、「group by」を明示的に指定することはないため、少し書き方が違う。 下記のようなモデルがあったとする。 from django.db import models class test_dogs(models.Model): name = models…

Read More

Docker環境のmysql初期立ち上げ時に、実行するSQLの設定

基本的なmysqlの環境構築については、下記を参照。 https://tech.tokiraku.com/archives/37 テンプレート 初期稼働時のSQLを実行するためには、エンドポイントを指定する必要があるらしい。 エンドポイントの名称は docker-entrypoint-initdb.d 。 下記は、それを含んだテンプレートになる。 version: '3' serv…

Read More