2013-02-14 2 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

Что данные выглядят как в Монго сейчас? Что вы пробовали? Очень просто преобразовать в желаемую структуру, хотя похоже, что у вас может быть неограниченный объем данных в вашем документе. Документы ограничены 16 МБ. – WiredPrairie

+1

Почему вы хотите, чтобы ваши данные выглядели так? Это выглядит ужасно, чтобы разобрать и работать с ... – Philipp

+0

мои коллеги, которые будут работать с этой базой данных, спросили меня, могу ли я спроектировать его таким образом, они думали, что он будет работать быстрее –

ответ

1

Ваша структура MongoDB хорошо выглядеть, когда по сравнению с MySql. Но если вы сохраняете такую ​​информацию, вам нужно делать цикл при чтении данных. Если размер данных станет большим, эти циклы замедлят ваше приложение.

Например, Вам нужны строки, где «Segment_ID» - «GILTO-EVX», в MongoDB у вас есть данные цикла с массивом «Сегмент_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 

Оба из них сложны в использовании. Я имею в виду, что вам нужно держать в массиве больший массив или большую строку. Этот комплекс будет увеличиваться при чтении соответствующей информации о других ключах (столбцах), соответствующих «Сегмент_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 месяцев, статистически в среднем требуется 1 месяц, чтобы сделать ребенка правильным? –

+1

Хорошо, я согласен. Сервер MongoDB делает меньше поиска для поиска ваших данных. Но как только вы получаете результат от MongoDB, усилия прилагаются к вашему веб-приложению, и эти усилия ухудшают производительность вашего приложения, иногда это приводит к краху приложения. Лучший вариант подталкивает эти усилия к MongoDB. Чтобы ваше приложение могло загружать информацию, вместо того, чтобы генерировать эту информацию. –

+0

okey, спасибо вам за ваши советы :), это всего лишь одна неделя, когда я начал wrok с mongodb, поэтому я действительно не знал, какой дизайн схемы выбирает, чтобы запросы выполнялись быстрее –