X



データベースを作ってみたいです

0001NAME IS NULL
垢版 |
2009/11/05(木) 14:04:37ID:/IXGaMOJ
MySQLやSQLiteのようなRDBMSを作ってみたいです。
参考になる書籍(教科書?)やWebサイトがあれば教えてくれませんか
0002NAME IS NULL
垢版 |
2009/11/05(木) 19:38:59ID:???
ビチッ…ビチチッ!ジュルジュル…ジュ…ビチチッ!
0003NAME IS NULL
垢版 |
2009/11/06(金) 11:10:16ID:1IUAmQkD
その程度のことを自分で探せないやつに作れないだろ。
0004NAME IS NULL
垢版 |
2009/11/06(金) 17:47:18ID:???
ごめんよ…母ちゃん
0005NAME IS NULL
垢版 |
2009/11/10(火) 18:41:11ID:???
いきなり高度なことをやろうとするとその設計をどうしたらいいか
分からず、途方にくれて終わるものだ。
まずはCSVファイルの操作を行うモジュール群を作ってみてはどうだ?
指定した行でソートするとか、指定した文字を含んだ行だけ取り出すとかが
出来るやつ。
いきなりSQL文の解析機能の実装をやろうなどという考えなどは捨てた方が良い。

CSVファイルに登録するデータも決めた物しかできないところからはじめる。
例) No, 名前, フリガナ, 性別, 郵便番号, 住所
0006NAME IS NULL
垢版 |
2009/11/12(木) 01:31:07ID:AL9WaU7d
sqlの解析自体は難しくない
字句解析とか構文解析でぐぐろう

実装は部分からでいい


monaのdb版の誕生に期待
0007NAME IS NULL
垢版 |
2009/11/12(木) 07:15:17ID:???
言語は何を使うつもりやろか
0008NAME IS NULL
垢版 |
2009/11/12(木) 08:34:12ID:???
>>5

>いきなり高度なことをやろうとするとその設計をどうしたらいいか
>分からず、途方にくれて終わるものだ。
そのとおりだと思います。有難う御座います。
CSVの操作ぐらいならできそうなのでISAMの実装なんかから始めたいなと思ってます。
0009NAME IS NULL
垢版 |
2009/11/12(木) 08:38:16ID:???
>>6
SQLの部分ではなくデータ構造(?)のほうに興味があります
ISAM形式というのが基本っぽいのですがあってますでしょうか
0010NAME IS NULL
垢版 |
2009/11/12(木) 08:39:51ID:???
>>7
実用では考えていないので、LL系でいいかなと思っています。
0011NAME IS NULL
垢版 |
2009/11/13(金) 13:31:41ID:???
SQLiteのソースを読むのもいいかも
0012NAME IS NULL
垢版 |
2009/11/13(金) 21:50:45ID:???
>>1にとっては、そのソースを読むのは、急に高い崖を登るのに
近い行為となるだろう。(無理だと決め付けているという意味ではなくて)
まずは、データの保存や抽出をする部分をクラスにまとめて
使いやすくしたモジュールを提供するという考えで設計する
ところからやってみてはいかがだろうか。
0013NAME IS NULL
垢版 |
2009/11/13(金) 21:55:22ID:???
俺は「SQL文を解析して実行」という事にこだわる必要も無いと
思うけどな。そうしたらSQLインジェクションに対抗できる
仕様設計だと考える事も出来るわけで。
0014NAME IS NULL
垢版 |
2009/11/13(金) 22:21:36ID:???
>>1が何を考えてこのスレを立てたのかにもよると思うな。
RDBMSとか書いているけれど、テーブルを個別に管理できればそれで良いという考えなのか、
それともリレーションのところまでやるのか。
トランザクションやら、ストアド・プロシージャなどのイメージもあるのか。

ま、俺の場合は、個人で作るものであれば、リレーションは切り捨てるだろうな。
普段作るDBを使ったプログラムは、リレーションはクライアントのプログラムの方で
実現する事が多いから。だから、参照整合性とかの機能の実装にはあまり興味が無い。
0015NAME IS NULL
垢版 |
2009/11/13(金) 22:24:39ID:???
VB.NET とかの世界だと、すでに mdbファイル & ADO.NET があるからなぁ。
PHP の世界だと、DBの構築をせずにデータの管理をしたい場合などで
一部使ってもらえるかもしれない。
0016NAME IS NULL
垢版 |
2009/11/14(土) 20:31:55ID:???
>>1がイメージしているRDBMSってどんなものなんだろうな。
mdbみたいにファイルとして存在しているものにアクセスするだけで
いいのか。それとも、SQL Server みたいに、アプリとは別にソフトが
立ち上がっていて、それがデータの制御を行う形なのか。
また、ネットワークを通じて複数のアクセスがあるのにも対応できる
かどうかとかあるしね。
ISAMの実装に興味があるような事をいってたけど、そういう部分への
対応はどこまでイメージしているのかな?
0017NAME IS NULL
垢版 |
2009/11/14(土) 20:36:31ID:???
こんな感じで管理すると複数のDBを持つのにも対応出来そうだね。
DB名:ディレクトリ名
テーブル名:CSVファイル名

例:DBが「test1」で、その中にテーブル「t1」「t2」「t3」がある場合

/monadb/test1/t1.csv
/monadb/test1/t2.csv
/monadb/test1/t3.csv
0018NAME IS NULL
垢版 |
2009/11/14(土) 20:44:55ID:???
>>1は余り興味ないようだけど、独特な設計をしたSQL文という発想もいいかもしれないね。
MonaOSの設計思想はそういうところがあるからね。
多くのユーザに使ってもらえるかを優先的に考え、過去のしがらみにとらわれた物の
延長として考えるのではなく、本当に使いやすいものを、と考える。
0019NAME IS NULL
垢版 |
2009/11/14(土) 20:54:33ID:???
処理効率が良いが、別に最適化が必要。
処理効率は悪いが、最適化は不要。

こういうのはどうなんだろ。
0020NAME IS NULL
垢版 |
2009/11/15(日) 10:47:25ID:???
とにかく処理効率の速さにこだわったものという方向性は
辞めておいた方がいいのかな。その先にGoogleが居るからw
「処理効率は、ある程度良い」くらいw
0021NAME IS NULL
垢版 |
2009/11/15(日) 22:57:15ID:???
他の人にアドバイスを貰うなら、

>CSVの操作ぐらいならできそうなのでISAMの実装なんかから始めたいなと思ってます。

ではなく、もう少し具体的なイメージを説明できた方がいい。
試しに自分が利用するシーンを想像して、
 「こんな感じで検索を指示して、結果を配列に入れる」
 「こんな感じで更新するデータと条件を準備して指示する」
なんてのが明確に出来た方がいい。

擬似的な利用例のスクリプトがあったりするといいかも。

##script(perl)

 use MYDB;
my $db = MYDB->new('mydb/mydbsample.csv');
my @rows;
@rows = $db->select( 'num, key, val', "key='V1.0' and val<'100'" );
$db->close();

##mydb/mydbsample.csv

num,key,val
1,V1.0,150
2,V1.0,50
3,V1.1,120
4.V1.0,15
5,V1.1,20

なんて感じの。上はselectメソッドで key=V1.0 and val<100 な行を返してもらうことを想定。

>>1の考えていることを明確にしないと、助言・指摘をしたい/出来る人たちは説明に困っちゃうと思う。
0022NAME IS NULL
垢版 |
2009/11/16(月) 00:05:23ID:k/MYCyNn
>>1
エンジンとしてもっとも優れているのは BerkeleyDB でしょうね。
ただしテーブルもSQLもサポートしていません。
もちろんインデックスもです。
しかしリレーショナルデータベースを作るための要素は盛り込まれており
フリーで全ソース公開されています。

このソースを使ってエンジンの勉強をするか、
パーツを利用して独自のシステムを組み上げるとよいのではないでしょうか。

0023NAME IS NULL
垢版 |
2009/11/17(火) 08:58:35ID:???
実用は考えていないらしいからなあ
カラクリを確認するのが目的なんだろうなあ
他の人はMonaDBを期待してるのかな?
0024NAME IS NULL
垢版 |
2009/11/18(水) 08:58:51ID:???
>>22
そういるルールだからです。
「ぬーやる」バーガーはしってますか?
0025NAME IS NULL
垢版 |
2009/11/18(水) 09:10:00ID:???
カラクリは、内部的にはExcelシートの操作でしょ。
で、そのExcelシートはCSVの拡張版。

もっと深いレベルでのノウハウの確認がしたいのかな?
0026NAME IS NULL
垢版 |
2009/11/19(木) 05:16:54ID:???
↓こういうことではないかと

ttp://d.hatena.ne.jp/koherent/
0027NAME IS NULL
垢版 |
2009/11/19(木) 07:52:57ID:???
>>1の文面やこのスレの流れを見る限り、それは高度すぎる事だと思うw
0028NAME IS NULL
垢版 |
2009/11/19(木) 08:14:24ID:???
そうか?
ググってたら見つけたんだけど、
このブログ、面白そうなので、オレはしばらく追いかけることにするw
0029NAME IS NULL
垢版 |
2009/11/19(木) 13:25:36ID:???
>>1は、ググっても見つけれない、もしくは、ググれないんだから仕方が無いw
0030NAME IS NULL
垢版 |
2009/11/19(木) 21:21:56ID:???
monaのDB版は高度じゃないといけないのだろうか?w
ム板でしぃ言語を作ろうなんて企画があがって、しばらくしたら
過疎って無くなってしまったなんて事があったけどなw
ま、俺は>>1じゃないけれど、主催者側のはっきりとした目的と、
それに共同して意見を行ってくれる方が居るかどうかが
重要なのかな、と思ってる。
0031NAME IS NULL
垢版 |
2009/11/21(土) 16:17:13ID:???
このスレは、現時点ですでに3種類の考え方があるように思える。
1.エンジンの仕組みについて勉強しよう派
2.CSV等を使って大まかな概念をつかみさえすれば良いだろ派
3.方向性はわからないけれど、とにかくMonaが出来るのに期待派

当面は統一が上手くできずにずるずる続くんだろうなw
0032NAME IS NULL
垢版 |
2009/11/23(月) 07:26:19ID:???
3はキモいし寒い
何かが出来たら出来たで「これ2ch発なんだぜ」と自慢するんだろうよ、自分の手柄でも無いのに
0033NAME IS NULL
垢版 |
2009/11/23(月) 09:28:26ID:???
そういう自慢をする奴は、普段の言動を見ていると、いたいやつだとすぐに
分かるから別にいいのでは?w
winnyだって、2chで共同開発したわけじゃないし

ま、スレが生産性の無い書き込みばかりで埋まっていくのはうざいけどな。
0034NAME IS NULL
垢版 |
2009/11/24(火) 22:41:41ID:???
で、結局この後、>>1は生産性のある書き込みをせずにこのスレは終息していくのだろうな。
0035NAME IS NULL
垢版 |
2009/11/26(木) 07:25:21ID:???
>>1は消えたようだな。1ヶ月ももたなかったかw
0036NAME IS NULL
垢版 |
2010/02/10(水) 17:17:06ID:???
せっかく新しいデータベースエンジンを作ろうというのに
最初からSQL前提の書き込みしかないね。

やっぱ今からやるなら問い合わせも独自言語でしょう。
0039NAME IS NULL
垢版 |
2010/06/09(水) 18:50:19ID:???
データベースの構造が
CSV のSQL対応高度版なんて
おバカな夢想もいいとろこで
お前ら、アフォかましてないで文献読めよ。

CSVの高度版っぽく見えるのは、ただ単に
理解しやすいようにインターフェースが
そうなってるだけだ。
0040NAME IS NULL
垢版 |
2010/09/11(土) 12:57:33ID:???
>>39
かなり遅レスだが、そういうアフォかましている課程を
具体的にやってみて、アフォらしさを学ぶという
目的もあるのでは、といってみるテスト
0041NAME IS NULL
垢版 |
2010/11/27(土) 12:30:58ID:???
>>39
亀レスだけど、文献は何がいいのでしょうか?
書籍?ブログ?
0042NAME IS NULL
垢版 |
2010/11/29(月) 13:36:24ID:???
トランザクション処理 概念と技法
0043NAME IS NULL
垢版 |
2010/11/30(火) 11:14:50ID:???
>>42
紹介ありがとう。
トランザクションの解説だけで1400ページを超えるとかすごいなw
上下巻あわせると広辞苑超えるとかどんだけwww
0045NAME IS NULL
垢版 |
2010/11/30(火) 13:50:49ID:???
ちょっとウェブで調べてみたが、理論と実装は別々に考えて学ぶべきみたいだ。
しかし、理解の方はいまいちだ。うまく概要をつかむ方法は無いものか。。。

Perlでファイルの上書きする時、「元のファイルをコピーして、それを
リネームで上書きする」という処理方法をとる事があるけれど、
そういう原理で実装しているという理解じゃだめなのかな?

トランザクション処理
http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%87%A6%E7%90%86
0046NAME IS NULL
垢版 |
2010/12/02(木) 00:31:57ID:???
accessでのフォームやレポートにあたる部分はpostgreSQLやMYSQLでは
どのようにして作成するのですか?
0047NAME IS NULL
垢版 |
2010/12/02(木) 14:33:34ID:???
>>46
VB.NETとかC++とかjavaとか、Accessを使って作成します。
Accessはデータベースの入門として使ってもいいけれど、
使いやすさを出す為、データベースの概念とは少しずれた
作りになってる。そこを理解した方がいいよ。
0048NAME IS NULL
垢版 |
2010/12/02(木) 21:51:36ID:???
>>47
ありがとうございます。勉強してみます。
レスを投稿する


ニューススポーツなんでも実況