2016-06-21 4 views
1

私は自分のウェブサイト(Neo4jを使用しています)の登録フォームを作成しており、国、都道府県および市区町村を入力する必要があります。これらのフィールドはすべて国境を越えてリンクされており、国によっては州のフィールドが設定され、州の都市によって設定されます。私はNeo4jを使ってこれをモデル化するための最良のアプローチが何かを理解しようとしています。各国、州、市のノードを作成し、それらの間に関係を作成する必要がありますか?例えば、デトロイトは - ミシガンに属し、 - アメリカ合衆国に属します。 Neo4jでこれを処理する最良の方法は何でしょうか?見るべき例はありますか? Neo4jでこれを行うと効率的でしょうか?あるいは、MongoDBのような文書ベースのDBを使用する方が良いでしょうか?Neo4jを使用して国、州、都市をモデル化する方法

+0

すべてのデータベース、SQLまたはNoSQLがこれを簡単に処理します。 「ベスト」は意見に基づいています。 Neo4Jはグラフデータベースです。私は国から始まるグラフを見ることができます。グラフには、都市と児童を持つ州の子供がいます。都市は多くの郵便番号を持つことができるので、それらは難しいです。私は単純なことをやってみましょう - それらをリレーショナルデータベースに入れて移動してください。 – duffymo

+0

SQLまたはNoSQLがこれを処理できるかどうかという疑問はありません。おそらく、それは明らかではなかった。しかし、私はすでに自分のウェブサイトにNeo4jを使用しています。したがって、Neo4jを使用してこの機能を処理する方が良いでしょうか、そのような理由/利点のために別のデータベースで処理する方が良いでしょうか。それは私のようなものを構築しようとする最初の試みです。この分野でより多くの経験を持っている誰かが彼の意見を共有できると思った – jas

+0

私はその質問を理解しました。私はこれをNeo4Jに入れません。グラフデータベースは、ディープオブジェクトグラフに最適です。あなたの郵便番号データの場合はそうではありません。これは、リレーショナルデータベースにとっては単純な問題です。私はそこに置いた。 – duffymo

答えて

0

都市、州、国のノードを作成し、それらを配線する(私の今後のプロジェクトではまったく同じことをやっています)という提案はできません。これにより、グラフの他の部分でそれらのノードを再利用することも可能になり、特性比較よりも速い速度で一般的な場所を使用して面白いクエリを作成することが可能になります。

あなたの要件が正しく理解されている場合は、フィールドをドロップダウンまたはオートコンプリートして各レベルにドリルダウンします(各国のプルダウンメニュー - >選択した国の州の次のプルダウンを設定) - >選択された州の都市)。クイックノードルックアップのために識別子や略語にインデックスを追加するだけで良いです。それはかなり速く動作するはずです。

そこに郵便番号を追加している場合は、同じ方法で実際にモデリングすることはできないため、難しいかもしれません。あなたは、州と市の両方からzipへの1対多の関係を持っています。間違いがない限り、単一の州や都市以上にまたがるいくつかの興味深いジップがあります。複雑なことが起こる他の要因には、5対9桁のジップ(他の国の場合はそれ以上)、他の国のジップ相当品の処理などがあります。

+0

はい、間違いなく可能ですが、多くのノードが使用されなくても50,000のノードをすべて作成することは避けました。私は2つのステップのアプローチを取っています。フラスコフレームワークを使用していますので、CSVファイルを使用してドロップダウンメニューを作成します。ユーザーが登録フォームを送信すると、City、state、Countryのノードを作成します。だから、提案したように私はグラフの他の部分でノードを再利用することができます。私は識別子や略語にインデックスを追加することについてのあなたの提案については気づかないだろう。私はそれも行って、それがうまくいくかどうかを見ていきます。アイデアありがとう! – jas

+0

索引は、都市(または州または国)から開始し、デトロイトのユーザーまたはカリフォルニア内のユーザーに関するデータに関するクエリなどのカスタム識別子または省略語を使用してクエリを実行した場合にのみ有用です。 City(またはCountryまたはState)との関係が1つ(またはごく少数)ある他のデータから出発する場合、リンクされたノードのルックアップとトラバーサルはすでに一定であるため、時間。 – InverseFalcon

関連する問題