2013-05-03 2 views
0

Я хочу развернуть небольшой веб-проект, который я имею в виду, где данные, которые я хочу сохранить, это структуры с вложенными структурами внутри, и большую часть времени внутренние структуры не имеют одинаковые поля и типы.Как выбрать, какую базу данных использовать для хранения объекта

, например, я хотел бы что-то подобное, чтобы быть «строка» в таблице

{ 
    event : "The Oscars", 
    place : "Los Angeles, USA", 
    date : "March 2, 2014" 
    awards : 
    [ 

    bestMovie : 
    [ 

     name : "someName", 
     director : "someDirector", 
     actors : 
     [ 
     ... etc 
     ] 

    ], 

    bestActor : "someActor" 

    ] 

} 

(объекты JSON легко использовать для меня на данный момент, и передавая его между сервером и клиентская сторона работает на JavaScript)

Я начал с MySQL/PHP, но очень скоро увидел, что это меня не устраивает. Я пробовал mongoDB в течение нескольких дней, но я не знаю, как точно уточнить мой поиск, на котором лучше всего использовать db. Я хочу иметь возможность устанавливать некоторые объектные модели/схемы и выбирать именно ту часть, которую нужно обновить, и какие поля уникальны в каждой структуре.

Любые предложения? Благодарю.

ответ

1

Это не вопрос ответственности, поэтому, скорее всего, он будет закрыт. Существует не один прямо не отвечать здесь и есть несколько вопросов, чтобы спросить, такие как структуры данных, требование к скорости и старые CAP теоремы вопросы, что делать вам нужно:

  • Консистенция
  • Наличие
  • Возможность перегородки

Я бы предположил, что манго станет отличным местом для начала, если вы случайно работаете и не ожидаете иметь дело с какими-либо проблемами выше по шкале. Couch - еще один подобный вариант, но не имеет того же размера сообщества.

Я говорю mongo, потому что ваши данные денормализуются в документе, а mongo хорош в обслуживании документов. Это также говорит json!

Базы данных RDBMS потребуют от вас денормализации ваших документов и создания отношений, которые довольно много работают из того места, где вы относитесь к тому, чтобы вставлять документы в документ.

Вы можете сериализовать данные с помощью буферов протокола и поместить их в rdbms, но это не рекомендуется.

Для быстрой скорости вы можете использовать redis, который имеет постоянный поиск времени в памяти. Но это лучше всего подходит (в большинстве случаев) для эфемерных данных, таких как сеансы пользователей - не долговременное постоянное хранилище.

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

Рассматривая некоторые возможности, я думаю, вы, скорее всего, найдете лучшие монго, которые удовлетворят ваши потребности, поскольку у вас уже есть структуры документов json, и для них требуется простое сопротивление.

+0

Большое спасибо. Я знаю, что это «общий» вопрос. В данный момент я буду придерживаться mongoDB. – AntouanK

Смежные вопросы