2009-04-11 20 views
2

私はCAD(Computer-Aided Design)アプリケーションを作成しています。私は、この製品で3dオブジェクトのライブラリを出荷する必要があります。これらは単純なもので、3次元座標だけで構成され、そのうち約300個以上は存在しません。データベースの推奨

この目的でリレーショナルデータベースを使用することを検討しています。しかし、私の単純なニーズを考えれば、私は複雑なことを望んでいません。今まで、私はSQLiteに傾いています。それは小さく、クライアントプロセス内で実行され、高速であると主張されています。私は貧しい人で、無料です。

私は自分自身をSQLiteにコミットする前に、自分の要件を考慮して、それが良い選択であるかどうかを聞いてみたいです。また、決定を下す前に私が試してみるべき等価な代替案がありますか?

編集

私は出荷します上記の言ったCADオブジェクトは不変であることを行っていないことを先に言及しませんでした。私は、ユーザーがそれらを編集し(寸法、色などを変更する)、ライブラリに戻って保存することを期待しています。私はまた、ユーザーが新しく作成したオブジェクトを追加することを期待しています。あなたの答えにこれを親切に考えてください。

(回答いただきありがとうございます)

+0

は実際にはOS /プログラミング言語プラットフォームにもよります。あなたは何を使っていますか? C#/ .NET on Windows? LinuxのJava? –

+0

Marc、WindowsでC#を使用します。 –

答えて

0

送料はいくらですか?これらのオブジェクトとそれぞれの座標をxmlファイルで定義できますか?ですから、基本的にオブジェクトごとに異なるXMLファイルを使用しますか?これらのxmlファイルはディレクトリに置くことができます。これは単純な構造にすることができます。

3

本当に考慮すべき点は、プログラムがデータで行うことです。リレーショナルデータベースは、一連のデータ間の複雑な関係を処理するように設計されています。しかし、複雑な計算を行うようには設計されていません。

また、データの量と相対的に単純なことから、フラットファイルを使用して座標を保存し、必要に応じてメモリに読み込むことができます。この方法で、データの構造を設計して、このデータをどのように使用するのかを、格納方法をより正確に反映させることができます。

多くの言語では、データ構造をファイルに書き込んで、再びserializationという名前で読み取るメカニズムを提供しています。 Pythonのpickleはそのようなライブラリの1つで、あなたが使用する言語に対応したものを見つけることができます。基本的には、クラスやデータ構造をプログラムでどのように使用するかによって決まります。これらの直列化ライブラリの1つを使用して、そのクラスまたはデータ構造のインスタンスを生成します。

編集:構造が変更可能なこと要件は、本当に私の答えに関してはあまり影響しません - 私はまだシリアライズとデシリアライズは、この問題に対する最善の解決策だと思います。ユーザーが構造を変更して保存できるようにする必要があるという事実は、ファイルが完全かつ正確に更新されることを確実にするための少しの計画を必要としますが、最終的には、 SQLiteや他の組み込みデータベースをマーシャリングしてこの仕事をしてください。

複数のユーザーが中央データリポジトリとやりとりしているシステムを持っていて、MySQLのようなデータベースサーバーを見ているような場合、PostgreSQL、またはSQL Serverを使用することができます。

また、あなたの言語としてC#を使用するとコメントしました。 。NETはシリアル番号built inをサポートしていますので、good to goにする必要があります。

1

私はあなたがH2を使用することをお勧めします、それは本当に軽量で高速です。

1

300個の3Dオブジェクトのライブラリがあるとすると、ユーザーが作成するモデルではなく、コードのオブジェクトを意味すると見なします。

object databasesは、複雑なモデルの特徴である長いリファレンスチェーンを追いかけていくのに最適であるため、CADの問題に役立つことが分かりました。おそらくdb4oのようなものがあなたの文脈で役に立つでしょう。

+0

出荷するライブラリには、デフォルトのオブジェクトセットが含まれています。ユーザーはそれらを変更し、変更をライブラリに戻すことができます。また、彼らは自分自身の新しいオブジェクトを作成し、ライブラリに追加することが許可されます。 –

0

私はSQLデータベースを使用しません。すべての3DオブジェクトをXMLファイルで簡単に記述できます。このファイルをディレクトリにパックし、すべてをパック(zip)します。オブジェクトのメタデータに簡単にアクセスする必要がある場合は、インデックスファイル(名前または説明のみ)を生成できるので、すべてのオブジェクトを解析してメモリにロードする必要はありません(ライブラリマネージャのようなものは便利です)

利用できる素早く簡単なSAXパーサーがあり、XMLライターを簡単に書くことができます(またはこれに使用できる無料のコードがいくつか見つかりました)。

今日、XMLを使用している多くの同様のアプリケーション。パース/書込みが容易で、人間が読める形式であり、圧縮されていればスペースを必要としません。

私は使いやすいSqliteを使用しており、独自のオブジェクトとの統合が容易です。しかし、私は大量のデータレコードのための良い検索ツールが必要なアプリケーションのために、SqliteのようなSQLデータベースをより好むでしょう。

0

具体的な要件、すなわち、アプリケーションと共に出荷されるオブジェクトのライブラリを提供するために、データベースシステムは、おそらく正解ではありません。

最初に気にするところは、ファイルを更新可能にしたい、つまりアプリケーションの残りの部分を変更せずにファイルをアプリケーションにドロップして更新できるようにすることです。

2番目のことは、出荷するデータが不変であることです。このため、効率的に特定のモデルにアクセスできるように、リレーショナルデータベースの機能は必要ありません。

わかりやすい(並べ替えのために)XMLファイルは、優れた構造を持っているとうまくいくでしょう。それを基にして、圧縮し、暗号化し、アセンブリでリソースとして埋め込むなどを選択することができます。

明らかに、SQLiteがそのデータを単一のファイルあなたはあなたのストレージシステムのDBの能力を必要とする他の理由がある場合ははい、しかし、私は全体としてアプリケーションへのDBのユーティリティについて考えてみたいです。

0

SQL Server CEは無料で、フットプリントが小さく(実行中のサービスはありません)、SQL Serverと互換性があります。