全文検索

Sennaを使いたかったのだが、MySAMしかサポートしていないようだ。
InnoDBが前提の部分が多く、MyISAMにするのは無理。
そもそも今回は完全に多言語なので、N-Gramのみでよいのだ。
それならSennaよりもっと楽なのが他にあるのでは?と思ったのだが、
根本的にInnoDBはfulltext型をサポートしていないらしい。
楽なやつというのは要するにfulltext型の処理をプラグインで横取りしているやつだろうから、
InnoDBだと楽はできないということなのか?
どうすれば良いのだろうか。。。

訂正

トランザクションの分離レベルを変えることを推奨している文書を見かけない、は誤り。
時々遅いのは許せるけどデータ間の整合性が破綻するのは許せないでしょ。
細かいことが分からない君は、きっと、分からなくてよい規模のことやってるわけでしょ?
なら、とりあえずserializableにしとけば良いんじゃね?
っていう文書を見かけない。。。
に訂正。


ActiveRecordトランザクションは無くなるって書いてあったんじゃなくて、
単にオブジェクトレベルのトランザクションがduprecateされるって書いてあったが正解。
だった気がする。

真面目に排他制御

MySQLで真面目に排他制御
InnoDBはテーブルをロック出来ない。
いや、出来るんだけど、トランザクションの中ではロック出来ない。
私にとっては、ロック出来ないのと一緒。


じゃぁ、ロック用のテーブルに各テーブルに対応する行を作って、それを行ロックではどうだ!
っていうか、内部実装上も、それで良いんじゃない?
内部的にはそれでは駄目なのか、それとも、そもそも内部も糞もなく、それでは駄目なのか。


と言いつつ、でもテーブル毎にロックを切り替えたりするのは面倒臭い!
なら、もうどのテーブルを区別しないで1行だけロック?
それなら、そもそもトランザクションの分離レベルを変えた方が良い。。。


大規模なシステムならともかく、ほぼ個人レベルのちょっとしたアプリなら、
トランザクションの分離レベルを変えるが単純で確実な気がするのですが、
何故かそれが推奨されている文書を見たことがない?何かあるのか?


それはそうと、ActiveRecordトランザクションは、
オブジェクトに付けたエラー情報まで綺麗さっぱりロールバック。。。
これは困る。。。
どうしようかと思ってソースを眺めたら、そもそもActiveRecordトランザクションは、
もう無くなるって書いてあるし。
どうすれば良いのだろうか?


難しいなぁ。