MySQLにHTMLのソースを保存する方法とは【メンターが回答】

「MySQLにHTMLのソースを保存する場合のデータタイプがわかりません。」という質問にTechAcademyの現役エンジニアが解決方法を回答しています。MySQLの設定の仕方についてぜひ理解しておきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

※TechAcademyに実際に寄せられた質問に現役エンジニアのメンターが回答しました。

 

田島悠介

質問に対して現役のエンジニアが回答していくシリーズだね!

大石ゆかり

今回はどういう質問でしょうか?

田島悠介

MySQLにHTMLのソースを保存する方法だね!実際に回答してもらった内容を紹介するね!

大石ゆかり

お願いします!

質問

日々動的に更新されるサイトに対して、静的なHTMLのソースをDBへバックアップする上での質問です。

保存対象はHTMLソースのみで、CSSやJSのリンクファイルは必要ありません。

HTMLソースの文字数:約40万文字(日本語・英数字合計)
レコード追加頻度:1000件/日

試しに下記(1)の構造で動かしたところ、保存は出来ていたもののなぜかDBが壊れてMySQLが起動しなくなりました。

そこで、データタイプを mediumtext にしました。

mediumtext は、最長16,777,215 (224 – 1) バイトとあったので、日本語が含まれていても、上限文字数には達しないと考えています。

現在は下記(2)の構造にして、保存自体はできています。

この他に、インデックスの付け方など適切な保存方法はありますでしょうか?

 

該当のソースコード

(1)

'id' int AUTO_INCREMENT
'html' TEXT
'update' TIMESTAMP

(2)

'id' int AUTO_INCREMENT
'html' MEDIUMTEXT
'update' TIMESTAMP

 

[PR] HTML/CSSで挫折しない学習方法を動画で公開中

メンターからの回答

そもそもですが、HTMLソースをDBに保存しない方がいいという意見が多くあります。

ただし、何らかの理由でHTMLソースをDBに保存しなければいけないケースがあると思いますので、お答えします。

どんな形式のシステムを設計しているかはわかりませんが、HTMLソースをDBに保存している代表的なソフトウェアというと「WordPress」なのかと思います。

WordPressのデータベース構造

WordPressのDBでは wp_postsテーブルに記事内容を保持するpost_contentというカラムがあります。このカラムの型はlongtextであるため、それで問題なく動作しているという実績があるということがわかりました。

ただし、基本的にカラムの型は入れるデータに依存するため、自分が入れるデータがどのくらいになるかを実際に計測して決めるのが一番かと思います。

40万文字未満だとわかっているのであれば、mediumtext で十分です。

その他に関しては、<head></head>等は共通化できるならする、キャッシュ等使う、レコードごとにURLを振るのであればidなどにインデックスをつけると早くなるかもしれません (計測しないとわかりませんが)。

 

以上、MySQLにHTMLのソースを保存する方法について解説しました。

TechAcademyでは、現役HTML/CSSエンジニアのメンターが質問にすぐ回答します。

他にもPHPとHTMLをまとめてコメントアウトする方法をメンターが回答しているので、合わせてご覧ください。

 

回答してくれたメンター

鵜澤 峻平(うさわしゅんぺい)

現在はフリーランスのエンジニアをしていてプログラミング歴は5年目になります、普段は Rails、Laravel、Node.js等を使って Web、モバイルアプリケーションを作成しています。開発実績としては、いくつかの Web サービス、コンシューマー向けモバイルアプリケーション、NPO サイトリニューアル、ロボット用プログラムなどがあります。

TechAcademyでメンターをはじめたのは、「プログラミングでやりたいことがある人を応援したい」、「講師と受講者が話し合って学び方を決めていく」に惹かれたからです。

 

田島悠介

MySQLにHTMLのソースを保存する方法について解説したよ。

大石ゆかり

MySQLのデータ型とは何でしょうか。

田島悠介

あらかじめどのようなデータやデータ量が入るか決めておく型みたいなものだよ。メインメモリ上で容量を節約するのが重要だね。

大石ゆかり

わかりました。ありがとうございます!

 

また、TechAcademyでは初心者でも最短4週間でオリジナルWebサイトを公開できるWebデザインオンラインブートキャンプを開催しています。

CSSの書き方やWebデザインのスキルなど基礎から学ぶことができます。

独学に限界を感じている場合はご検討ください。