質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

1回答

3205閲覧

タグのDB設計でToxi法の必要性がよくわかりません(FULLTEXT INDEX で事足りるのではないでしょうか?)

crazyBaseball

総合スコア21

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2021/10/12 20:34

編集2021/10/12 22:54

###質問事項
Twitterを作ろうって思ったら、あの検索性って、Toxi法ではなくフルテキストインデックスで事足りますか?それともToxi法を採用すべき理由ってありますか?

先日フルテキストインデックスという機能を知り、これがあればToxi法なんていらないじゃん。と思ったのですが、みなさんがTwitter作ろうって思ったらどうするかアドバイス頂けましたら幸いです。

以下に、DB設計と検索の流れについてToxi法とフルテキストインデックスを比べました。やはりテーブルが1つで済むフルテキストインデックスで事足りるような気がするのですが、どうなのでしょうか..?

###Toxi法
3つのテーブルを作る

・「朝食」の検索時はtweetsテーブルを検索する。
・「#朝食」の検索時はtagsテーブルを検索し、relationsおよびtweetsテーブルとjoinする。

tweetsテーブル

IDuser_IDtweet
11おはようございます。 #朝食 はこちらです

tagsテーブル

IDtweet_IDtag
11朝食

relationsテーブル

tweet_IDtag_ID
11

###フルテキストインデックス
1つのテーブルだけ作りフルテキストインデックスを使う

・「朝食」の検索時はtweetsテーブルを検索する。
・「#朝食」の検索時もtweetsテーブルを検索する。

tweetsテーブル

IDuser_IDtweet
11おはようございます。 #朝食 はこちらです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2021/10/12 21:21

「Twitterを作ろうと思っているのですが」の時点で、もう字面見ただけで荒唐無稽すぎるんで、「あーこれはTwitterぽいものの話だね」と解釈するとしても、「事足りるのでは?」という疑問はいったいどんな規模のシステムを想定して生じた疑問なのかわからん。 練習用プログラムでそれが悲鳴を上げるほどパフォーマンスに問題が生じるなんて普通に考えられないし、「Twitterを作ろう」というのが万が一Twitter社がやってるレベルのものを想定した話だとしたら、それこそハードウェア(ストレージとかネットワーク機器の性能)から考える必要あるレベルなんだが。 早い話が、「まず基準(ユーザー数やアクセス頻度)を示せ」というのと、「その基準を元に一度自分で検証しろ」という、ごくありきたりな突っ込みが入って終わりじゃね?
crazyBaseball

2021/10/12 22:00

うわ、すごいですね。「Twitter社がやってるレベルのもの」を考えています。普通にタグのDB設計を調べるとToxi法が出てきますよね。でもフルテキストインデックスで足りそうだと思ったので、みなさんが作るとしたらどうしたいですか?と、そんなニュアンスです。
hentaiman

2021/10/13 00:12

質問に書いてある感想持ってる時点で恐らく実際に体験しないと理解出来ないと思うので、試しに作って大量のアクセス飛ばしてみてください その際はログを出力するのを忘れずに
gentaro

2021/10/13 01:41

「Twitter社がやってるレベルのもの」を考えるならまず最初にクリアする必要があるのは設備投資に使える金の調達。 数十億でも足りないと思うけど、それができたらまた質問したら?
退会済みユーザー

退会済みユーザー

2021/10/14 02:15

まず「Twitterを作ろう」の意味は「Twittweと同等の規模のSNSを作ろう」ということですか? もしこの問いの答えが「Yes」なら以下は読む必要がありません。 「No」ならば恐らく「Twitterと似たような機能を持つ小さなSNSを作ろう」という意味だろうと思います。その意味でToxi法のような3つのテーブルを使った自前のタグシステムを作るか、データベースの出来合いの全文検索機能(フルテキストインデックス)を使用するかで迷っているという話かと思います。 以上の前提で簡単にご説明します。 まずタグベースのシステムは予め検索キーワードが決まっている検索機能と捉えることができます。 これに対して全文検索機能は予め検索キーワードが決まっていません。あらゆる文字の組み合わせで検索でき、検索対象にそれらが含まれていればそれを見つけられないといけません(あるいは表記揺れを吸収し類義語での検索もするかもしれません)。つまりより自由で高度な検索機能なのです。そのため、既存のテーブル構造を元にユーザーがToxi法と似たような方法でその実装をしていくよりは、データベース側の機能として用意した方がいろいろ効率的という考えから、昨今のデータベースの多くにはそのような機能が実装されています。 データベース作成者が内部実装を最大限活用して実装した全文検索機能が、ユーザー作成のToxi法ベースの実装を速度的・機能的に凌駕するのは想像に難くないですが、全文検索機能では予め検索キーワードが決まっていないため、どうしても必要以上にインデックスが大きくなってしまいます。 以上から、予めタグが決められるのであれば私なら全てを制御可能なToxi法で実装します。逆に普通のタグベースでない検索機能も同時に実装するなら、(仕様的に許されれば)全文検索機能を使うと思うので、Toxi法は使いません。(申し訳ありませんが、コメントを返して頂いてもお返事はなかなかできないかもしれません)
crazyBaseball

2021/10/22 21:52

dameo様、意図を察して頂いた的確なご助言に感謝申し上げます。まさに「普通のタグベースでない検索機能も同時に実装する」という点で考えておりましたので全文検索機能のみに絞りたいと思います。 他の方もありがとうございました。
guest

回答1

0

Twitterを作ろうって思ったら、あの検索性って、Toxi法ではなくフルテキストインデックスで事足りますか?それともToxi法を採用すべき理由ってありますか?

どっちでないと思いますよ。

参考:
The Infrastructure Behind Twitter: Scale - 2017

2017 年の古い記事ですが、この時点ですでに Cache による backing stores へのアクセス量削減が語られています。Twitter 規模の検索性は、質問のような小さな視点では解決しません。

投稿2021/10/12 23:17

編集2021/10/12 23:19
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

crazyBaseball

2021/10/22 21:52

情報ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問