電子書籍の厳選無料作品が豊富!

ニコニコ動画や様々なWEBサービスは、レスポンス向上のためなどの理由により独自のデータベースを作っていると思います。
初めにできればC言語を使ったデータベースソフトに取り掛かろうと思いました。
そこで、本やWEBを探したところ見つからず途方に暮れています。
できれば、初級の本や適切なステップをお教え願えないでしょうか?

A 回答 (7件)

ということは、


ストレージ上へのレコードの格納方法
型ごとの格納方法
可変長データの格納方法
索引の作り方
順次検索や索引検索
ソート
リレーションのさせかた
ユニークやNULLの扱い
ネットワークからのSQLの受取り方と結果の返し方
SQLの解析方法
SQLの最適化
トランザクション処理
ロギング
バキュームやダンプ
といったことを、一からC言語で作りたいということなんですね。
(思いつくままに適当に羅列しましたが)

車輪の再発明という言葉がありますが、データベースを使っている
アプリケーションやWebシステムで、RDBエンジンそのものを一から作ることは あまりないですよ。
一般的なリレーショナルデータベースの行と列に収まらないデータを格納する場合でも、
XMLデータベースとかありますので。

勉強の為にということなら、C言語で
固定長レコードのバイナリファイルの読み書き
索引を別ファイル化
順次検索・索引検索
的なところから入って、だんだん大きくしていっては どうでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。
このステップからまずは、やっていこうと思います。

お礼日時:2011/04/08 06:29

この手の本や整備されたドキュメントはなかなか難しいので、探すならOSSの方が充実していますね。


すでにC言語、C++言語が柔軟に解釈できるのであれば、
MySQL等のデータベースソフトウェアのソースコードを読む込むというのもステップの1つになるかと思います。
初級となると、図解による構造説明等が(理解を早めるために)必要になると思いますので、いきなりソースコードというのは
良いステップとは限りませんが、勉強にはなると思います。
ご参考までに
    • good
    • 0
この回答へのお礼

ベストアンサーには、選べませんでしたが、ソースコードを見るというのも一つの手だと思いました。
ありがとうございます。

お礼日時:2011/04/08 06:28

最初の質問からすると、ニコニコ動画が独自のデータベースエンジンを使っていると勘違いされているようですが、べつに特別なものは使われていないですよ。


ドワンゴの「ニコニコ動画の仕組み」
http://info.dwango.co.jp/rd/files/niconico_douga …
はっきり、「MySQL5」と書かれています。

信頼性やレスポンス性、開発工数などなどを加味すると独自のデータベースエンジンは開発コストが割に合いませんのでまず行いません。
※ googleは独自なデータベースエンジンを使ってますが。これはgoogleの規模が半端無く大きいからです。世界企業レベルのシステムは参考にもなりません。

質問者さんにはっきりしてもらいたいのは、データベースエンジン/サーバー/ライブラリなどデータベースの根本システム(DBMS)のアルゴリズムの部分を開発したいのか、データベースを使った応用ソフトを作りたいかです。
    • good
    • 0

DBのライブラリ・システムは構築する気はなく、DBを使ったソフトを作りたいと言う認識でよろしいか?


であれば、DBサーバを使わないにしても何らかのDBライブラリを使うということで考えたほうが良いでしょう。

SqLite3と言うDBライブラリなら無料で利用できますし、C言語インターフェイスですので利用されたら如何でしょう。PHP5でも採用されています。

「SQLiteで組み込みDB体験(1/3):CodeZine」
http://codezine.jp/article/detail/374
「[SQLite3] SQLiteにC言語でアクセス(基礎編) | idocsq.net」
http://idocsq.net/page/505
    • good
    • 0

PHP+MYSQLでアクセス数がそんなにないのならば、


・mysql_pconnect関数を使い、コネクションを切らないようにする
・パラメータだけ異なるSQLを多数発行するなら、query_cacheではなくサーバーサイドのPrepared Statementを使用する。
と、それなりにレスポンスが向上します。

この回答への補足

申し訳ございませんが、独自のデータベースを作りたいと思っていますので、チューニング等で高速化したいとは、考えていません。

補足日時:2011/04/06 15:07
    • good
    • 0

意図がよくわかりませんがリレーショナルデータベースを一から構築したいのであれば、まずリレーショナルデータベースと言うものを経験するところから初めて見てはどうでしょうか?


RubyやPHPなどからはMySqlなどのリレーショナルDBサーバーは比較的簡単に扱えます。Sqliteと言うサーバータイプでないデータベースライブラリもあります。

その上で、リレーショナルデータベースの構造を勉強してみてください。それを元に設計できるだけの力量は必要ですが。
「関係データベース - Wikipedia」
http://ja.wikipedia.org/wiki/%E9%96%A2%E4%BF%82% …
「データベース基礎中の基礎」
http://thinkit.co.jp/book/2009/09/24/596

この回答への補足

MySqlは、利用したことはありませんが、DB2,oracleの経験がありますので、そこは、必要ないと考えています。
できれば、簡単なデータベースソフトを作るところから始めたいと思っています。

補足日時:2011/04/06 15:05
    • good
    • 0

独自のデータベースということだと、


データベースエンジンそのものを、フルスクラッチでC言語で作りたいのかと、思ってしまいましたが、

> 様々なWEBサービスは、レスポンス向上のためなどの理由により独自のデータベースを作っていると思います。

ということですと、
既存のデータベースエンジンを利用したアプリケーションをC言語で作りたい、ということなんでしょうね。

データベースの利用は、極端にいうと、テーブル設計+SQL言語の修得 といってもよいかと思います。

データベースを利用したWebアプリケーションの作り方は、言語別にたくさんの書籍がありますが、
C言語のものって少なくて、PHP,Ruby on Rails, ASP.NET(VBかC#), Java,Perlあたりかと思います。

初心者がSQLを理解するんだったら、C言語よりも、PHPとかRubyのほうがよいと思いますよ。
SQLそのものに集中してコーディングできるので。

この回答への補足

文章が読みづらく申し訳ございません。
C言語でデータベースソフトを作りたいと思っています。

補足日時:2011/04/06 15:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!