トップページ⇒tech
20コメント6KB

テキストデータとRDB

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 NGNG
今度仕事で、
ヤフーオークションの検索のように
大量のデータから検索させるシステムを作るのですが、
データはどのようにするのが一番効率よいのでしょうか?
テキストファイルにまとめておくと、
1万件読み出して、1行追加してから、一万件書きこみとか
なってしまって大丈夫なのかとか思ってってしまいます。
データベースサーバがあったほうがよいのでしょうか?
0002名無しさん@お腹いっぱい。 NGNG
ただ単純に「速度だけ」追求するんならDBはとても遅い。
低レベルの入出力やメモリーマップドファイル、
共有メモリを組み合わせて使えば良い。
DBを使うのは作業効率の問題。
0003名無しさん@お腹いっぱい。 NGNG
複数のテーブルを突き合わせて検索を行わない限り
DBを導入するメリットは少ないと思う。
ただマルチユーザーからの同時アクセスを考慮する
なら、話は別。
0004名無しさん@お腹いっぱい。 NGNG
>2、3
なるほど、特にリレーショナルの必要が無いときは
DBはいらないのですね。
私が、心配なのは、テキストファイルが肥大しすぎないかということなのです。
それとWEBにおくのでマルチユーザーの同時アクセスは前提です。
掲示板のログなんかはflockかけてても良くとんじゃいますよね?


0005名無しさん@お腹いっぱい。 NGNG
>1
>大量のデータから検索させるシステムを作るのですが、
>4
>それとWEBにおくのでマルチユーザーの同時アクセスは前提です。

そういうときのためにこそDBMSがあるのです。

検索エンジンや排他制御の仕組みをどうしても自分
で作りたいという理由とそれを保守していく人的資
源があるならともかく、ビジネス目的の実用システ
ムを作るなら、OracleなどのDBMSを使いましょう。
0006名無しさん@お腹いっぱい。 NGNG
WebのマルチユーザーでOracleなんか使ったらお金かかりますよ。
Oracleだけはやめましょう。
大手ベンダーは別のあつかいしてもらえるらしいけど。
0007名無しさん@お腹いっぱい。 NGNG
PostgreSQLってどーよ?
0008名無しさん@お腹いっぱい。 NGNG
InterBase
0009名無しさん@お腹いっぱい。 NGNG
テキストの全文検索ならNAMAZUを使うという手もある
http://www.namazu.org/
0010名無しさん@お腹いっぱい。 NGNG
レコードが、テキスト本体とキーくらいなら、検索ルーチン作っても
そんなに手間かからないからDBMSの必要無いかも。
読むだけなら、複数同時にアクセスあっても気にする事無いし。
0011名無しさん@お腹いっぱい。 NGNG
1は何となく初心者ぽくて、やりたいことをうまく表現できてないようだが、
>テキストデータとRDB
これは、データ保存の形式においてRDBの比較対象として「テキスト」と
言っているわけであって、必ずしもNamazuが全文検索の対象としている
ような「テキスト」のデータを扱うとは、書いてないな。
>1万件読み出して、1行追加してから、一万件書きこみとか
少なくとも insert はあるってことだな。

既存のDBMS使わずに自作するなら、索引の構造とか、排他
制御対象の単位をどうするかとか、データキャッシュ(←もし使
うなら)の制御とか、書き込み処理の原子性の保証とか、いろ
いろ考慮する必要あるぞ。
0012名無しさん NGNG
ちょっと質問があるのですが、
テキストファイルに1行書き込むということは、
どんな言語でどうやっても、
全行読み出して、全行+1行書き込みをやっていることになるのでしょうか?
1行ずつ追加する関数を標準でもっている言語とかもありますけど、
内部的にはそうやっているのでしょうか?
0013>12 NGNG
ほとんどの言語でプログラム次第ではないかと。
追加する行より前は読み書きしない、くらいはやったほうがいいでしょうね。
でも、そのファイルのフォーマットがただのテキストファイルでなくても
いいんなら、行の先頭へのファイルポインタて管理するとか、いろいろ方法
があるので、エディタスレッドに出てるページが参考になるかも↓
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=966997468
0014>12 NGNG
ファイルへの書き込み位置をファイルの最後にして一行書きこむ
という手はあります。
0015名無しさん@お腹いっぱい。 NGNG
realloc() とか同じで、サイズが変わるゆーことは、
どちらにせよ、別の場所に入る事になるんだから、
内部では、12のゆっているよーに、そーゆーことやってるね、たぶん

初めから、でかい領域をとっていれば・・・・・・
0016名無しさん@お腹いっぱい。 NGNG
>15
でかい領域って、どっち? ファイル? メモリ?
0017名無しさん@お腹いっぱい。 NGNG
遅くなるかどうか誰かやってみて。
0018名無しさん@お腹いっぱい。 NGNG
age
0019名無しさん NGNG
>>15
んなわけないじゃん。
0020名無しさん@お腹いっぱい。 NGNG
業務系でアクセス速度が優先されるファイルなら
フィールド固定長でランダムアクセス掛けるよ。
BasicのField文でも勉強したら?
■ このスレッドは過去ログ倉庫に格納されています