2013-02-14 97 views
0

我有mysql數據庫誰是這樣的:MongoDB的架構設計用於存儲MySQL的列像數組值查詢

----|-----------|--------|------------|---------|----------|---------|----------|----------| 
    _id| Segment_ID| Origin | Destination| Aircraft| Latitude1|Latitude2|Longitude1|Longitude2| 
    ----|-----------|--------|------------|---------|----------|---------|----------|----------| 
    1 | LFAQ-GILTO| LFAQ | KURIS  | A3ST | 49.56 | 2.5  | 49.97 | 2.33  | 
    ----|-----------|--------|------------|---------|----------|---------|----------|----------| 
    1 |GILTO-EVX | LFAQ | KURIS  | A3ST | 49.97 | 2.33 | 50.70 | 2.12  | 
    ----|-----------|--------|------------|---------|----------|---------|----------|----------| 
    1 |EVX-KURIS | LFAQ | KURIS  | A3ST | 50.70 | 2.12 | 52.00 | 2.07  | 
    ----|-----------|--------|------------|---------|----------|---------|----------|----------| 

我想從MySQL遷移我的數據庫MongoDB中來。我使用mongify在MongoDB中將我的數據庫遷移到嵌入式集合中。我對此沒有任何問題。但是,我想要做下一個: 1.遷移到MongoDB中的嵌入式集合,並將列作爲數組值。 2.我希望我的MongoDB集合看起來像這樣

Flight: { 
    id:1 { 
    "Segment_ID": "LFAQ-GILTO, GILTO-EVX, EVX-KURIS", 
    "Origin": "LFAQ, LFAQ, LFAQ", 
    "Destination": "KURIS, KURIS, KURIS", 
    "Aircraft" : "A3ST, A3ST, A3ST", 
    "Latitude1" : "49.56, 49.97, 50.70", 
etc..... 

有沒有什麼辦法可以使它發揮作用?

現在我的數據庫看起來像:

Flight: { 
id1: { 
"0": { 
"Segment_ID": "LFAQ-GILTO", 
"Origin": "LFAQ", 
"Destination": KURIS", 
"Aircraft" : "A3ST", 
"LAtitude1": "49.56", 
....... 
}, 
"1": { 
"Segment_ID": "LFAQ-GILTO", 
"Origin": "LFAQ", 
"Destination": KURIS", 
"Aircraft" : "A3ST", 
"LAtitude1": "49.56", 
..... 
}, 
"2": { 
"Segment_ID": "LFAQ-GILTO", 
"Origin": "LFAQ", 
"Destination": KURIS", 
"Aircraft" : "A3ST", 
"LAtitude1": "49.56", 
.....}, 
...... 
+0

數據是否會是什麼樣蒙戈現在?你有什麼嘗試?它看起來非常直接,可以轉換成您想要的結構,儘管看起來您的文檔中可能有無限的數據。文檔僅限於16MB。 – WiredPrairie 2013-02-14 12:05:48

+1

爲什麼你想讓你的數據看起來這樣?這看起來可怕的解析和工作... – Philipp 2013-02-14 12:34:19

+0

我的同事誰將與這個數據庫工作問我,如果我可以這樣設計,他們認爲它會更快工作 – 2013-02-14 14:08:36

回答

1

你MongoDB的結構是好當的比較MySQL來看看。但是如果你保存這樣的信息,你必須循環讀取數據。如果數據量變大,這個循環會減慢你的應用程序。

例如, 您需要「Segment_ID」爲「GILTO-EVX」的行,在MongoDB中,您有針對「Segment_ID」數組的循環數據。因爲MongoDB是返回父鍵及其所有值,即使單個值與您的條件匹配。在上面的情況下,MongoDB會給你

{ "Segment_ID": ["LFAQ-GILTO", "GILTO-EVX", "EVX-KURIS", ....] } //If you are keep values in array 
{ "Segment_ID": "LFAQ-GILTO, GILTO-EVX, EVX-KURIS, ....." } //If you are keep values as string with comma seperated 

兩者都很難使用進一步的過程。我的意思是你必須在變量中保留更大的數組或更大的字符串。在閱讀關於其他Keys(列)的相應信息時,該組合將增加,分別對應於「Segment_ID = GILTO-EVX」。 這裏我的建議是重新建構的MongoDB文檔如下,

//Doc 1 
{ 
    "Flight_id" : 1, 
    "Segment_ID": "LFAQ-GILTO", 
    "Origin": "LFAQ", 
    "Destination": "KURIS", 
    "Aircraft" : "A3ST", 
} 
//Doc 2 
{ 
    "Flight_id" : 1, 
    "Segment_ID": "GILTO-EVX", 
    "Origin": "LFAQ", 
    "Destination": "KURIS", 
    "Aircraft" : "A3ST", 
} 
//Doc3 and more... 
+0

如果他們不是程序員告訴他們謝謝,但不是感謝。請記住,如果9個月內有9名女性在9個月內有9個嬰兒,統計平均需要1個月才能生下一個嬰兒? – 2013-02-14 14:10:25

+1

好吧,我接受它。 MongoDB服務器不需要搜索來查找數據。但是,一旦您從MongoDB獲得結果,就會花費在您的Web應用程序上,而這些努力會降低您的應用程序性能,有時甚至會導致應用程序崩潰。更好的選擇將這些努力推向MongoDB。因此,您的應用可能會忙於提供信息,而不是生成這些信息。 – 2013-02-14 14:11:48

+0

okey,感謝您的建議:)我只用了一個星期就開始使用mongodb,所以我真的不知道選擇哪種模式設計來提高查詢的工作速度 – 2013-02-14 14:18:53