- 締切済み
波形データを格納するデータベース
大学院生です。実証実験のためにデータベースの使用を考えています。 専門外でわからないことだらけなので、検索の糸口だけでも頂けると有難いです。 以下の要求に当てはまるデータベース(DBMS?)にはどのようなものがあるでしょうか ・いくつかの数値データを関連付けて管理したい ・数値データの中には、波形データもある(100サンプル程度の複素数値) ・高速に入出力が出来る方が良い ・複数アプリケーションからアクセス出来る方が良い それともう数点、 一般的なデータベースで複素数値は格納できますでしょうか。別のカラムを用意して、実部虚部別で管理する必要がありますか。 データベースは列(カラム)と行(レコード)でデータを管理するようですが、波形データをデータベースに格納する際には、以下のように各サンプル値を各カラムに収容するという考え方で良いのでしょうか。グルーピングして1つのカラムに収容する方法があったりするのでしょうか。 ID カラム1 カラム2 カラム3 … 1 サンプル値1 サンプル値2 サンプル値3 … 2 サンプル値1 サンプル値2 サンプル値3 … データ量がさほど多くなければ、すべての値をデータベースでなくアプリケーション側の変数として格納しておくという形式もとれるのかなと思っていますが、このようにした場合に起きる問題点にはどのようなものがあるでしょうか。 回答をお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- ki073
- ベストアンサー率77% (491/634)
No.3です。補足です。 JSONはほとんどのプログラミング言語で使えます。Cにもライブラリがあり使えるようですが、RubyやPythonなどの動的変数を使えるプログラミング言語の方が有り難みが実感できます。 YAMLはJSONよりも遅いがデータ構造の自由度が高いように思います。 これら2つはテキストで保存されますが、バイナリで保存するタイプのシリアライズもあります。 >・高速に入出力が出来る方が良い 検索対象にしなければ十分な速度があると思います。 >・複数アプリケーションからアクセス出来る方が良い データベース側の問題ですが、以前はSQLite3を使っていました。読み込みだけでは同時でも全然問題は無いのですが、同時に書き込みができないとの書き込み速度が遅いです。複数から同時に書き込みたいのならPostgreSqlやMySQLなどがお勧めです。 別の方法として、データベースにはデータファイル名だけを登録しそれを利用する方法もありますが、データがそんなに大きくないようですの、シリアライズしてしまう方が管理が楽だと思います。
- ki073
- ベストアンサー率77% (491/634)
JSONやYAMLなどでシリアライズして1つのフィールドに入れてしまうの良いのでは。 それらは配列などのデータ構造を覚えていますので、簡単に元に戻せます。 ただし、そのデータを検索に使う場合は、元のデータ構造に戻す必要があるので多少時間がかかってしますの欠点です。 こちらでは、Rubyのactive recordとPostgreSqlの組み合わせで、大量の不定形のデータを管理しています。 active recordはシリアライズ宣言だけしておけば自動でやってくれます。またYAMLはほどんどのデータ形式を扱えますので、多分複素数データもそのまま扱えるはずです(これはRubyとYAMLの連携機能) ご参考に
お礼
こちらが今回やりたいことに最も近い方法でした。 ありがとうございます。
- kmee
- ベストアンサー率55% (1857/3366)
データベースは、あくまでデータを保存/閲覧するだけのもので、それをどう扱うかは、アプリケーション次第です。 単純に文字列した扱えないデータベースがあったとしても、その文字列を数値に変換するアプリを用意すれば「数値」として扱えます。 ・いくつかの数値データを関連付けて管理したい 関連付けの方法次第です。 ・数値データの中には、波形データもある(100サンプル程度の複素数値) 複素数そのものを扱えるDBはないかもしれませんが、 実数部と虚数部 (あるいは絶対値と角度)に分ければ数値として扱えます。 > ID カラム1 カラム2 カラム3 … これだといろいろやっかいだと思います。 (データが100個のものと120個のものがあったら?) ID, カラムNo, データ(実部), データ(虚部),(必要なら関連付けなどに使う情報) という形がよいでしょう。
お礼
なるほど。一旦すべて文字列として格納してしまうというのも手ですね。 今回サンプルデータ1つ1つに対しての検索は行わないので、やはり配列化して1フィールドへ格納する方法をとりました。
- lv4u
- ベストアンサー率27% (1862/6715)
データベースは、システムを作るための素材だといえるでしょう。 例えていえば、おいしい料理を作りたいという場合、素材となる卵、砂糖、塩などが必要です。が、それ以上にレシピが必要です。 レシピは、小保方さんがSTAP細胞の作成に必要な秘密を守るために、そのレシピを自分の頭の中のノートにだけ記載していたことからもわかるように、とても重要なものです。 質問者さんが作りたいシステムは、データベースを使えば可能になりますけど、データベースは素材でしかなく、レシピに相当する「アプリケーション」の開発が必要となります。 たぶん、質問内容からして、そういうアプリを質問者さんが作り上げるのは、かなり難しいと思えます。 大学院生ってことですから、このサイトではなく、同じ大学の情報系の教官とか、学生、院生に(謝礼・バイト代を出すなどして)協力を求めるのがいいのではないかと思います。
お礼
検討します。ありがとうございます。
お礼
補足ありがとうございます。