1

リレーショナル データベース (postgresql) と nosql データベース (mongodb) の間で、異なるデータベースを相互接続する必要があります。

いくつかの半構造化されたエンティティがあり、それらを mongoDB に配置し、論理的に postgres に格納されるリレーショナル スキーマをいくつか持っています。

問題:これらのエンティティ/ドキュメント/その他のものの間でいくつかの接続をバインドする必要があります。

スキーマ:

  • Postgres エンティティ [id,name,....]
  • MongoDB ドキュメント[オブジェクト ID,名前,....]

ソリューション:

1 - ID を「外部キー」として配置:

  • Postgres エンティティ [id,name, mongo_objectId ....]

  • MongoDB ドキュメント[objectid,name, postgres_entityId ....]

    次の理由から、これらのソリューションは好きではありません。

  • これは友好的ではありません

  • id は変更できます。つまり、postgres を別の種類のスキーマに移行する場合です。

2 - スキーマをバインドするためのわかりやすい文字列キーを生成します。

  • Postgres エンティティ [ID、名前、キー....]

  • MongoDB ドキュメント[オブジェクト ID、名前、キー....]

キーは文字列、一意でわかりやすいものになります。つまり、名前が「Michàél Knïght」の場合、キーは「michael-knight」またはデータベースに既に存在する場合は「michael-knight_{counter}」になります。

私の質問:

パフォーマンスの問題を引き起こす可能性はありますか? 整数値の方が索引付けに適していると思います...

4

1 に答える 1

0

MongoDB の ObjectId に関する内部最適化があり、同等の文字列よりもコンパクトです。主キーは一般に不変であるため、ソリューション 1 が悪い考えではないと思います。

于 2013-11-12T23:42:50.770 に答える