(開発中の)MySQLデータベース上で実行されているWebアプリケーションがあります。アプリケーションをGoogleAppEngineに移行することを検討しており、単純なリレーショナルデータベースモデルを非リレーショナルアプローチに変換する方法をよりよく理解したいと思います。
私は長年のリレーショナルデータベース担当者であり、BigTableなどの列ベースのDBの経験はありません。Googleがリレーショナルデータベースの小規模な展開もサポートしている場合に備えて、私の質問は一般的なものであり、Googleに固有のものではないことを述べたいと思います。単純なリレーショナルモデルを非リレーショナルDBで表現する方法を理解したいと思います。
私のデータベース(簡略化)は次のとおりです。
Items Table
------------
ItemID ItemName ItemPriority
1 "Car" 7
2 "Table" 2
3 "Desk" 7
ItemProperties Table
---------------------
ItemID Property Importance
1 "Blue" 1
1 "Four Wheels" 2
1 "Sedan" 0
2 "Rectangular" 1
2 "One Leg" 1
名前とIDが付いたアイテムがたくさんあります。各アイテムには複数のプロパティがあり、各プロパティにはいくつかのパラメータがあります(各プロパティの名前と「重要性」についてのみ説明しましたが、さらに多くのパラメータがあります)。私は数千万のアイテムを持っており、それぞれに数百のプロパティがあります。
使用シナリオ:入力としてItemNameを受け取り、itemsテーブルでそのIDを検索し、そのIDですべてのプロパティをフェッチします。次に、(メモリ内の)プロパティのリストに対して分析を実行し、結果を返します。
作業の90%は、パラメーターに基づくルックアップです。パラメーターは、(私が正しく理解していれば)非リレーショナルDBの問題点です。
推奨されるアプローチは何ですか?