sqlite
で、AccessからSQLite3をODBCで除くようにテーブルリンクを張って、Railsでマクロ指定をつけて.mdbを引っぱたいて、打ち込んだデータを整形印刷させる仕組みを作り上げる。 しかしAccessというのもアレだよなぁ。Web系で使うレポートツールってなにがあるん…
Magic Multi-Connectionsという分散DB対応ライブラリがあることをいまごろ知ったので簡単に試してみる。 とても分かりやすい記事があったので使わせていただきます。 想定として、Userモデル、UserInfoモデルがあり、 Userはメインデータベースで管理する。 …
大量データ(100万件以上)を使ったときのメモ。 SQLite3は、データをフェッチする前の「select count(*)」が遅いみたい。 例えば、複雑なVIEWを多段に組んだ結果をテンポラリテーブルに入れるとき、先に件数が欲しいからと CREATE TEMP TABLE FIND_COUNT AS…
力尽きたりバタバタしてたりで放っておいたマトメを。
Macと同じ手順でできない。なぜだ。なぜlibdlをリンクしてくれないのだ。 あきらめて、configureで出来たMakefileの sqlite3$(TEXE) ...部分に「-ldl」を手で加えて、sudo make; sudo make install した。ナットクいかない。というかこんな時間までなにやっ…
結論:できました。OSX上でビルドして確認。 効果:極めてグゥ。正規表現で試した(Railsで12万件の住所に"東京.*(東|西|南|北)"して25件のpaginate処理)。 Rubyで10.5秒。 PCREを使った拡張ライブラリで0.39秒。約27倍。 概要:enable_load_extension(), l…
あれこれ見ていて気がついた。現状では、C言語で正規表現処理を書いてもRubyからSQLiteに組み込めない、ってことかな。sqlite3-ruby経由だと".load"も"select load_extencion()"もエラーになるわけで。 よって選択肢は2つ。 SQLite3に正規表現処理を埋め込…
SQLite3で正規表現を高速動作させよう。ということで、PCREを拡張ライブラリとして組み込むことにする。 SQLite3.3.13を取ってきてOSXでビルド。 $ env CFLAGS="-DHAVE_DLOPEN" ./configure --enable-threadsafe --disable-tcl --prefix=/opt/local $ make $…
かなーり探したつもりなのだけれど方法が見つからず。はやく公式実装されないかなぁ・・・ とりあえずRubyでREGEXP関数を作ってRailsで使うの巻。ちょー遅いけど動くのでOK。 準備 ApplicationControllerにREGEXP機能を差し込むコードを書く。 class Applica…