<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF
	xmlns="http://purl.org/rss/1.0/"
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
	xml:lang="ja-JP"
>
	<channel rdf:about="http://txqz.net/genre/MySQL.rdf">
		<title>私とMySQL</title>
		<link>http://txqz.net/genre/MySQL</link>
		<dc:creator>陽坂智佐</dc:creator>
		<description>最新15件を表示します。</description>
		<items>
			<rdf:Seq>
				<rdf:li rdf:resource="http://txqz.net/blog/2008/05/05/1837"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2008/03/20/1834"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2007/07/21/1821"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2007/06/07/2026"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2007/05/18/1525"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2007/05/01/1552"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2007/01/17/1920"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2006/12/19/2347"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2006/12/13/0943"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2006/11/23/0000"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2006/11/22/0959"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2006/11/11/2202"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2006/11/08/1006"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2006/10/17/2115"/>
				<rdf:li rdf:resource="http://txqz.net/blog/2006/08/27/0253"/>
			</rdf:Seq>
		</items>
	</channel>
	<item rdf:about="http://txqz.net/blog/2008/05/05/1837">
		<title>記事-タグの関係をMySQLicious化</title>
		<link>http://txqz.net/blog/2008/05/05/1837</link>
		<description>先日の正規化ネタの件でid:teramakoさんがdel.icio.usでの例を紹介して下さったので移行してみた。
今までの構造
今までこのブログで記事とタグの関係がどうなっていたかというと、教科書どおりに正規化していた。ただ、タグそのものにIDをふって [items] - [item_tag] - [tags] という構造ではなくて、[items] - [tags]という形になっていた。以下のような感じ:

items

idtitlebodydate


1地球空冷化&lt;p ……</description>
		<dc:subject>このサイト</dc:subject>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>スキーム</dc:subject>
		<dc:subject>SQL</dc:subject>
		<dc:date>2008-05-05T18:37:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2008/05/05/1837/tb"/>
	</item>
	<item rdf:about="http://txqz.net/blog/2008/03/20/1834">
		<title>1:nなデータを検索しやすくDBに入れたい</title>
		<link>http://txqz.net/blog/2008/03/20/1834</link>
		<description>いま後輩が悩んでいるネタ。たとえば、以下のようなデータをデータベースにどう格納するかを考える。

夜行バスと割引

名前行き先片道運賃割引


セレナーデ号広島駅8400早売14、ネット割2%、往復割引
出雲・松江ドリーム名古屋号出雲市駅9000早売21、ネット割2%、往復割引
オリーブ松山号JR松山支店10000往復割引


手元に資料があるもので適当に問題を置き換えたので例が悪いが、とにかくこういうデータをどういうスキーマで格納するかを考える。教科書どおりに沿って考えると ……</description>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>SQL</dc:subject>
		<dc:subject>データベース</dc:subject>
		<dc:subject>正規表現</dc:subject>
		<dc:date>2008-03-20T18:34:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2008/03/20/1834/tb"/>
	</item>
	<item rdf:about="http://txqz.net/blog/2007/07/21/1821">
		<title>tritonn-1.0.3リリースでインストールがより簡単に</title>
		<link>http://txqz.net/blog/2007/07/21/1821</link>
		<description>
変更点は主にBug Fixとなります。詳しくはChangelogを御覧下さい。　なお、今回のリリースから配布形式をパッチ単体ではなく、MySQLのソースコードにパッチ組み込んだ形に変更しました

これはうれしい。</description>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>senna</dc:subject>
		<dc:subject>tritonn</dc:subject>
		<dc:subject>全文検索</dc:subject>
		<dc:date>2007-07-21T18:21:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2007/07/21/1821/tb"/>
	</item>
	<item rdf:about="http://txqz.net/blog/2007/06/07/2026">
		<title>Sennaとかのアレの続き Tritonn編</title>
		<link>http://txqz.net/blog/2007/06/07/2026</link>
		<description>以前書いたMySQLにSennaを当てたときのメモが地味に注目を集めているらしく、ときたまSBMにブクマされたりしている。あのときは、お手本がDebianでパスの指定がCentOSと違っていたり、何か自分の環境で用を全うするのに必要な知識が分散していたりして無駄に時間がかかったので、一応CentOSユーザな私がやったことを一括に並べておいて、後から同じことをするのに都合の良いようにするためにあれを書いた。今はTritonnがあり、Tritonnのドキュメントをそのままなぞれば (--prefixとか ……</description>
		<dc:subject>MeCab</dc:subject>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>Senna</dc:subject>
		<dc:subject>SuffixArray</dc:subject>
		<dc:subject>Tritonn</dc:subject>
		<dc:subject>全文検索</dc:subject>
		<dc:subject>語彙</dc:subject>
		<dc:subject>辞書</dc:subject>
		<dc:date>2007-06-07T20:26:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2007/06/07/2026/tb"/>
	</item>
	<item rdf:about="http://txqz.net/blog/2007/05/18/1525">
		<title>Snippetしようとするとcannot add conditions</title>
		<link>http://txqz.net/blog/2007/05/18/1525</link>
		<description>いままでMySQL5.0.33+Senna0.8.2だった環境をMySQL5.0.37+Senna1.0.4+MeCab0.95+Tritonn1.0.2に変えた。
従来の環境では、MeCabの辞書で全文検索インデックスを作るよりN-gramの方が早いし良いかと思っていたが、Sennaがついにバージョン1になったり、やっぱり多少速度がアレになってもより正確な方が良いよねということになったりしたので、バージョンアップをすることにした。
いろいろ試行錯誤があったものも、最終的にはMySQL5.0.3 ……</description>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>Senna</dc:subject>
		<dc:subject>snippet</dc:subject>
		<dc:subject>トラブル</dc:subject>
		<dc:date>2007-05-18T15:25:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2007/05/18/1525/tb"/>
	</item>
	<item rdf:about="http://txqz.net/blog/2007/05/01/1552">
		<title>データベーススキーマの設計</title>
		<link>http://txqz.net/blog/2007/05/01/1552</link>
		<description>
複数テーブルにまたがるJOINは避ける非正規化ロジックで対応


まっとうなクエリスキーマをデザインすること。テーブルの結合を怖がることはない、大抵非正規化よりも速い 

結局どっちなんだ?</description>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>RDBMS</dc:subject>
		<dc:subject>SQL</dc:subject>
		<dc:date>2007-05-01T15:52:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2007/05/01/1552/tb"/>
	</item>
	<item rdf:about="http://txqz.net/blog/2007/01/17/1920">
		<title>なければ INSERT、あれば UPDATE</title>
		<link>http://txqz.net/blog/2007/01/17/1920</link>
		<description>すでにテーブルにある主キーやユニークキーと同じ値をふくむ行を挿入しようとするときに、こちらの想定する振る舞いをさせる方法のまとめ。まぁ、リファレンスマニュアルの INSERT 構文のところを見れば話は終わりなのだけれども。

ID (主キー)値

1100
2800
3400



間違って主キーと同じ値を含む行を挿入しようとしたらエラーを出して教えてほしいとき
INSERT INTO test VALUES(1,100); とすると、ERROR 1062 (23000): D ……</description>
		<dc:subject>MySQL</dc:subject>
		<dc:date>2007-01-17T19:20:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2007/01/17/1920/tb"/>
		<trackback:about rdf:resource=""/>
	</item>
	<item rdf:about="http://txqz.net/blog/2006/12/19/2347">
		<title>MySQLでTF-IDFの計算、あと2つのベクトルの内積の計算</title>
		<link>http://txqz.net/blog/2006/12/19/2347</link>
		<description>本文を形態素分解し、必要な品詞をtfテーブルとdfテーブルに入れる。分析対象となる文書群すべてについてこの処理を行い、各形態素のTF-IDF値を求めて文書をベクトル化する。他の文書ベクトルと内積を比較し、小さい順に「似ている記事」を求めたい (クラスタリングとかは別途)。
HarmanによるTF値の正規化とSparok JonesによるDF値の正規化をする場合のTF-IDF値の計算式は以下のようになる (参考文献):
tfidf(i,j) = log2(freq(i,j) + 1) / log2 ……</description>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>SQL</dc:subject>
		<dc:subject>TF-IDF</dc:subject>
		<dc:subject>ベクトル空間</dc:subject>
		<dc:subject>内積</dc:subject>
		<dc:subject>自然言語処理</dc:subject>
		<dc:date>2006-12-19T23:47:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2006/12/19/2347/tb"/>
	</item>
	<item rdf:about="http://txqz.net/blog/2006/12/13/0943">
		<title>MySQLノウハウ</title>
		<link>http://txqz.net/blog/2006/12/13/0943</link>
		<description>いろいろな本からメモってきたメモのメモ。出典を書いておくのを忘れた。思い出し次第補完するかも。

deleteのコストは高いので、無効化を示すフィールドを作ってupdateすべき
slow query logに要注意
多くのエントリでほとんどのフィールドが同じ値を持つ場合はインデックスの効果が小さい
→複合インデックスの効果が大きい
複合インデックスは指定の順番が大切。AとBという指定の場合、A単独でもインデックスの効果がある。逆は真でない。
インデックスが使われる場面は
フィールド ……</description>
		<dc:subject>MySQL</dc:subject>
		<dc:date>2006-12-13T09:43:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2006/12/13/0943/tb"/>
		<trackback:about rdf:resource=""/>
	</item>
	<item rdf:about="http://txqz.net/blog/2006/11/23/0000">
		<title>Repairテーブルまだ終わらない</title>
		<link>http://txqz.net/blog/2006/11/23/0000</link>
		<description>138000秒(38時間+)経ってもまだ終わらない。</description>
		<dc:subject>MySQL</dc:subject>
		<dc:date>2006-11-23T00:00:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2006/11/23/0000/tb"/>
	</item>
	<item rdf:about="http://txqz.net/blog/2006/11/22/0959">
		<title>updateが終わらなくてkillしてもCommandがkilledのまま</title>
		<link>http://txqz.net/blog/2006/11/22/0959</link>
		<description>なんか電車の中からsunameri経由でkurageにログインしてMySQLの調子を観測するのがたるいのでなにかソリューションを考え中、ていうかsunameriにPHPMyAdminとか入れればいいのか。んー
で、このあいだのニュース板クローラに続き実況板クローラも、updateがぜんぜん終わらなくてkillしてもCommandがkilledのまま終わらなくてrepair table したらそれが30000秒経っても終わらないという状態になってしまったので、ていうか実況板クローラで遊ぶよりも卒論と ……</description>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>tv.oshira.se</dc:subject>
		<dc:subject>クローラ</dc:subject>
		<dc:date>2006-11-22T09:59:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2006/11/22/0959/tb"/>
	</item>
	<item rdf:about="http://txqz.net/blog/2006/11/11/2202">
		<title>大学祭とMySQLのレプリケーション</title>
		<link>http://txqz.net/blog/2006/11/11/2202</link>
		<description>大学祭。ミナミにいたらひーろんが来たので、彼と相合い傘（はーと←ぉぇ）佐世保バーガーがおいしかった。午後から行列になったそうだし、午前の早いうちに味わっておいてよかった。
戻ってきてからcronプロセスの監視。なんかエラーがでてたとこがあったのでパーサを少し書き直した。バージョンの古いのと新しいのがごちゃごちゃしていて、直したと思ったのがそれが実運用に入っていなかったりする。あとですっきりさせないといけない。jarファイルにまとめるとか。
そのあとはMySQLのレプリケーションに手を出す。なんか ……</description>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>レプリケーション</dc:subject>
		<dc:subject>佐世保バーガー</dc:subject>
		<dc:subject>大学祭</dc:subject>
		<dc:subject>静岡大学</dc:subject>
		<dc:date>2006-11-11T22:02:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2006/11/11/2202/tb"/>
	</item>
	<item rdf:about="http://txqz.net/blog/2006/11/08/1006">
		<title>where 句に関数を使うとインデックスが使われない罠</title>
		<link>http://txqz.net/blog/2006/11/08/1006</link>
		<description>MySQL 4.1 リファレンスマニュアル の 「日付と時刻関数」には、このクエリでは、過去 30 日以内の日付の date_col 値を持つすべてのレコードが選択されますとして SELECT something FROM tbl_name WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) &lt;= 30; という SQL 文が紹介されているけれども、これって INDEX が使われないわけで。
30日前の日付が他で分かるなら、それを BETWEEN で指定してあげ ……</description>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>インデックス</dc:subject>
		<dc:date>2006-11-08T10:06:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2006/11/08/1006/tb"/>
	</item>
	<item rdf:about="http://txqz.net/blog/2006/10/17/2115">
		<title>SennaのSnippet関数を使うためのSQL文を生成したい</title>
		<link>http://txqz.net/blog/2006/10/17/2115</link>
		<description>Sennaのsnippet udfを使うSQLは:
SELECT snippet(文書, snippetの長さの最大バイト数, snippetの最大個数, 文書の文字コード, htmlエンコーディングの有無, snippetの開始タグ, snippetの終了タグ, 単語1, 単語1の前につけられるタグ, 単語1の後につけられるタグ, 単語2, 単語2の前につけられるタグ, 単語2の後につけられるタグ, ...);
となっている。単語の数に応じて引数の数が変化するので、PreparedStatem ……</description>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>PHP</dc:subject>
		<dc:subject>Senna</dc:subject>
		<dc:subject>Snippet</dc:subject>
		<dc:subject>検索エンジン</dc:subject>
		<dc:date>2006-10-17T21:15:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2006/10/17/2115/tb"/>
	</item>
	<item rdf:about="http://txqz.net/blog/2006/08/27/0253">
		<title>CentOSにMeCab+Senna+MySQLを入れる</title>
		<link>http://txqz.net/blog/2006/08/27/0253</link>
		<description>日本語で全文検索をするために MySQL に Senna を組み込むメモ。少し前は個人ニュースサイトめぐり→日記書きに数時間を要していた私が次に目をつけたのがRSSめぐり→はてブ登録なのだがそれでも依然として数時間かかる。そんなあなた (私) に朗報です。私の代わりにブックマークしてくれるエージェントを作ればいいのです。そしてそのエージェントが今日よく使われていた単語やタグとか出してくれて、1次ソースAについてBさんとCさんとDさんがそれぞれの立場でこんなことを書いているとかいうのが俯瞰できて、さら ……</description>
		<dc:subject>CentOS</dc:subject>
		<dc:subject>Linux</dc:subject>
		<dc:subject>MeCab</dc:subject>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>PHP</dc:subject>
		<dc:subject>Senna</dc:subject>
		<dc:subject>インストール</dc:subject>
		<dc:subject>メモ</dc:subject>
		<dc:subject>文字コード</dc:subject>
		<dc:date>2006-08-27T02:53:00+09:00</dc:date>
		<trackback:ping rdf:resource="http://txqz.net/blog/2006/08/27/0253/tb"/>
		<trackback:about rdf:resource=""/>
	</item>
</rdf:RDF>