テーブルなしでデータベースにデータを保存する方法は?


12

学校で学んだのは、データをテーブルに保存するSQLだけでした。現在、データをXMLファイルに保存するプロジェクトに取り組んでいます。さらに、すべてのXMLにはビジュアルファイル(JPEG)への参照が含まれています。

XML自体には、1,000を超える座標点に加えて、データに関する追加情報が含まれています。

私の意見では、この情報をテーブルに保存しても意味がありません。それに、JPEGファイルをSQLで保存することもできませんでした。

適切な解決策は何ですか、または私の側の推論にエラーがありますか?

ご覧のとおり、私はデータベースにはかなり慣れていません。したがって、建設的な提案、リンク、アドバイスは大歓迎です。


SQL Serverは、IMAGEデータ型を使用してJPEGファイルを確実に保存できます。ただし、お勧めしません。FILE-STREAMを使用した方が良いでしょう。
datagod

データベースにjpeg(またはその他のファイル)を保存する場合、最もよく寄せられる質問のいくつかでここで処理されます。XMLを保存し、そのデータをすばやく見つける方法については、それがドキュメントデータストレージシステムの目的です。リレーショナルデータベースを介したNoSQLソリューションを検討すると、想像していた方が簡単に作業できます。
jcolebrand

XMLに関しては、IBMのDB2を使用すれば可能です。また、SQLまたはXPath / XQueryを使用してデータをクエリできます。無料のExpress-Cエディションには、これを行う機能が付属しています。ただし、Enterprise Editionに移行する場合は、この機能を有効にするために料金を支払う必要があります。
クリスアルドリッチ

回答:


11

必要なのは、XMLの永続性だけです。NoSQLソリューションまたはファイルシステムを使用します。

NoSQLまたはファイルシステムの代わりにRDBMSを使用する場合を除き、RDBMSを使用してもメリットはありません。


適切なNoSQLソリューションは何でしょうか?私はwinformアプリケーションでC#を使用しています。
チーズパン

@bodycountPP:私は...彼らとの経験がない
GBN

7
RavenDB(ravendb.net)またはCouchBase(couchbase.com/couchbase-server/overview)をWindowsで使用するためにチェックアウトします。他のものはGoogleで見つけることができます-私はそれらの製品で良い経験をしました。明らかにあなたの走行距離は異なる場合があります:)
ITHedgeHog

10

Phil Factorのブログ投稿Normalizationと 'Anima notitia copia'をブックマークしました。特定のタイプのデータの正規化の賛否をきちんと要約しているからです。SQLインスタンスで次のクエリを実行し、同意するかどうかを確認します。

SELECT * FROM sys.syslanguages

SQLを使用すると、リレーショナルデータベースを作成できます。ただし、悪臭があっても、必要であり、違いがわかる限り、SQLデータベースで非リレーショナルなことを恐ろしく行うことは犯罪ではありません。それだけでなく、リスクと影響を認識している場合にのみ。

XMLファイルには「データに関する追加情報」が含まれていると述べました。おそらく尋問の目的で、リレーショナルデータベースでそのメタデータをモデル化することに何か利点はありますか?その場合、関連データを抽出し、残りのXMLをXMLドキュメントタイプとして永続化する場合があります。

... JSON文字列またはXMLが渡され、データベースに保存する必要がある場合、あなたがする必要があるのは、Anima notitia copia(データベースのソウル)としての役割で、自分に質問することだけですこの情報項目の内容に興味がありますか?」答えが「No!」または「nequequam!」の場合 それは原子値ですが、どんなに複雑であってもかまいません。

Phil Factorの主張は、リレーショナルデータベースの非リレーショナルフィールドは、フィールドがアトミックとして扱われる場合、つまりフィールドが変更されない場合、またはフィールドの構成部分ではなくフィールド全体が変更される場合に完全に受け入れられるというものです。これの自然な拡張は、ドキュメントに興味のある要素が含まれている場合、それらの要素にリレーショナルモデルを適用することに価値があるかもしれないということです。

質問に関連していますが、主に語彙について、フィルからの最後の引用:

当然、私はCoddが眉をひそめるようなデータベースを知らずに作成したことはありませんが、エッジの周りには、正規化原理主義者の間でヒッシーな適合を引き起こしたインターフェースとデータフィードがあります。

みんなじゃない?


2
ACORDは少し似ています。私は、人々がそれをデータベースモデルとして機能させようとしているのを見てきました。ACORDはその後、Primaのデータモデルのライセンスを取得したため、データモデルではないことを認めていました。ACORDメッセージング標準には約7,000個のフィールドが定義されており、そのうち約200個が必須です-ACORDの最も良い説明は(メッセージング標準に深く関与している人から)、「標準プロセスの管理方法がわからない」ということです。
ConcernedOfTunbridgeWells

3

Oracleデータベースに関する限り、答えはできません。データベース内のすべてのデータは、メタデータも含めてテーブルに保存されます。データはキューに格納できますが、これらはテーブルの異なる使用方法です。XMLファイルはデータベースの外部に保存できますが、それは「データベース内」の要件を満たしません。

述べられた質問を超えて、JPEGファイルまたはその問題のファイルをデータベースに保存できます。テーブルとLOB列(BLOBまたはCLOB)が必要です。XMLはこの方法で保存することもできますが、XMLデータをデータベースにインポートすると、今では簡単にできない方法でデータを操作できます。また、データベースのその他の利点として、冗長性の低下、アクセシビリティ、同時実行性、スケーラビリティ、相互運用性、セキュリティ、リカバリ、パフォーマンスが提供されます。

データベースの利点が目標を促進しない場合は、それを使用しないでください。


2

空間データベースを実装しようとしているように思えます。これは一種のリレーショナルデータベース(またはOracle Spatial、postGISなどの既存のデータベース製品のアドオン)であり、空間データタイプの機能をサポートし、ポリゴン境界、ポイントなどの空間フィーチャに関連するデータのストレージとクエリを最適化するために使用されますと層。持っているXMLは境界座標ペアのように聞こえ、関連する画像はその境界に表示するアートワークアセットのように聞こえます。データが適合する場合は、組み込みの空間モデリングを提供するリレーショナル空間データベースを検討し、そうでなければ実装が困難または時間のかかる機能を提供します。


あなたがあればまた、されている実装する地理情報システムを、上の上でこの質問を検討する地理情報システム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.