MongoDB против MySQL 5.5? - PullRequest
1 голос
/ 11 июня 2011

Я пытаюсь исследовать MongoDB, сегодня я использую MySQL 5.5.

У меня есть службы SaaS, и мне нужна одна база данных, которая может обрабатывать потерю данных, строк и многого другого, и это нужно быстро.

Что я могу прочитать, это то, что MongoDB - это БД в серверах, если это правда, что произойдет, если сервер выйдет из строя?

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

Что я прочитал, MongoDB легко настроить для работы на большем количестве компьютеров, но так ли это?

Я здесь на чьей-то помощи, может, это не MySQL или MongoDB, которые мне нужны, может, это настройка базы данных 3?

Ответы [ 2 ]

2 голосов
/ 11 июня 2011

MongoDB - нереляционная база данных. нет соединений, нет строк, нет столбцов. Это на основе документов. MySQL - это реляционная база данных.

Например: у нас есть несколько серверов. У каждого сервера есть имя, IP-адрес, администраторы и ОС. Но некоторые серверы имеют дополнительные данные «мастер». Если is_slave == true: вывести имя главного сервера.

В MongoDB (без индекса; здесь это не актуально):

{
  "_id": ObjectId("4da5609a7650bf3f57000000"),
  "name": "Testarossa",
  "ip":   "0.0.0.0",
  "admins": [
    { "username": "yitsushi", "has_sudo": true },
    { "username": "lokko",    "has_sudo": false }
  ],
  "os_name": "Gentoo",
  "is_slave": false
},
{
  "_id": ObjectId("4decc3d1f2d26f6716000001"),
  "name": "Amanuat",
  "ip":   "0.0.0.1",
  "admins": [
    { "username": "yitsushi",   "has_sudo": false },
    { "username": "parandokht", "has_sudo": true }
  ],
  "os_name": "Ubuntu 10.10",
  "is_slave": true,
  "master": {
    "name": "Testarossa",
    "server": {
      "$ref": "servers",
      "$id": ObjectId("4da5609a7650bf3f57000000"); 
    }
  }
}

Вы можете видеть, что главное поле не требуется, поэтому вам не нужно определять его в каждом документе вместо значений null / 0. И вы можете определить массив (администраторы) вместо связанных таблиц. В главном поле: мы определяем объект с двумя свойствами: имя (для печатного имени сервера) и ссылка (мы можем создать ссылку с помощью doc['master']['server']['$id'] или с помощью другого запроса получить полный документ главного сервера) .

В MySQL нам нужны серверы, администраторы и таблица server_admins (минимум) и некоторые ненужные поля, значение которых null.

MongoDB и MySQL - это не одна и та же категория. MongoDB - нереляционная, MySQL - реляционная база данных. Для MongoDB или MySQL нужна совершенно другая логика и отношение.

Идеальная таблица сравнения: MongoDB, CouchDB, MySQL Grid сравнения на www.mongodb.org

0 голосов
/ 11 июня 2011

MongoDB старается как можно больше хранить в памяти.Однако все данные также записываются на жесткий диск.

MongoDB концентрируется на скорости, поэтому при сбое сервера риск немного выше, чем вы теряете, может быть, последние несколько записей.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...