Является ли SimpleDB похожим на MongoDB?
Является SimpleDB похожим на MongoDB? Являются ли они базами данных типа/значения?
Ответ 1
Наиболее существенным сходством является тот факт, что они оба избегают реляционной модели. Помимо этого, они в основном разные, как вы смотрите на них. Вот разбивка дюжины способов сравнить их.
SimpleDB
- Служба Amazon размещена, поддерживается и масштабируется Amazon. Вам выставлен счет за то, что вы используете каждый месяц за пределами бесплатного уровня.
- Все данные реплицируются в фоновом режиме в нескольких центрах обработки данных.
- Все реплики могут обслуживать прямые запросы
- После сбоя сети или сервера любой из узлов синхронизации будет автоматически повторно синхронизироваться.
- Репликация фона приводит к возможной согласованности, но более высокой (теоретической) доступности.
- Все данные сохраняются как пары строк/строк, каждая из которых связана с ItemName
- Каждый элемент ограничен половиной мегабайта (каждое имя или значение может быть только 1024 байта, каждый элемент содержит 256 пар имя/значение), и каждый домен может содержать 10 ГБ
- Эти ограничения делают его подходящим для наборов данных, которые можно разбить на мелкие кусочки.
- SimpleDB оптимизирован для многих небольших запросов, выполняемых параллельно
- Пределы пропускной способности для каждого домена данных
- Горизонтальная масштабируемость достигается путем распространения ваших данных по большему количеству доменов.
- Все значения атрибутов индексируются автоматически, составные индексы не существуют (но могут быть смоделированы)
- Запросы выполняются с использованием языка запросов (Select Stripped down) SQL Select-like
MongoDB
- Продукт с открытым исходным кодом, который вы устанавливаете и поддерживаете на своих серверах.
- Данные могут быть реплицированы в режиме ведущий-ведомый
- Только ведущий может обслуживать запросы живой записи, ведомые могут обслуживать запросы (за исключением нерекомендовать режим с ограниченным мастер-мастером)
- После сбоя сети или сервера или когда реплика отстает слишком далеко, всегда потребуется вмешательство оператора.
- Единственный мастер сильно согласован.
- Все данные хранятся в виде сериализованных документов JSON, что позволяет использовать большой набор типов данных
- Каждый документ ограничен 4 МБ, более крупные документы могут быть сохранены с использованием специальной системы документирования документов.
- Наиболее подходит для небольших и средних данных и небольших двоичных объектов.
- Пределы пропускной способности продиктованы MongoDB и вашим оборудованием
- Вертикальная масштабируемость через больший сервер, потенциал для будущей горизонтальной масштабируемости в вашем собственном кластере серверов с помощью модуля шейпинга, который в настоящее время находится в разработке.
- Идентификатор документа индексируется автоматически. Индексы могут быть созданы и удалены по мере необходимости. Индексы могут быть для одного ключа или соединения.
- Запросы выполняются с использованием языка запросов стиля JSON.
Ответ 2
попробуйте проверить эту ссылку MongoDB vs. SimpleDB это сетка сравнения. Я надеюсь, что это будет полезно для вас.
Ответ 3
SimpleDB описывается как:
Модель данных проста:
- Большие коллекции предметов, организованных в области.
- Элементы немного хеша таблицы, содержащие атрибуты ключа, пары значений.
- Атрибуты могут быть искали различные лексикографические запросы.
MongoDB бит проще:
База данных управляет коллекциями JSON-подобные документы, которые хранятся в двоичном формате, называемом BSON.
Ответ 4
У меня есть приличное знание mongodb и только начал работать с SimpleDB. Поэтому в первую очередь оба они не являются хранилищем ключевого значения. Mongodb и SimpleDB являются основанной на документе базой данных nosql, которые не содержат схемы. Это означает, что вам не нужно создавать схему для таблицы, прежде чем вводить в нее данные (в основном это означает, что вы можете хранить там все, что захотите).
В основном здесь сходство заканчивается. Я буду использовать S для SimpleDB и M для Mongo.
- M написано на С++, S написано в Erlang (не самый быстрый язык)
- M является открытым исходным кодом, установленным повсеместно, S является собственностью, может работать только на Amazon AWS. Вы также должны заплатить за целую кучу сотрудников за S
- S имеет целую группу странные ограничения. M ограничения являются более разумными. Наиболее странные ограничения:
- Максимальный размер домена (таблица) - 10 ГБ.
- длина значения атрибута (размер поля) - 1024 байта.
- максимальное количество элементов в ответе Select - 2500
- максимальный размер ответа для выбора (максимальное количество данных S может вернуть вас) - 1Mb
- S поддерживает только несколько языков (java, php, python, ruby,.net), M поддерживает путь больше
- обе поддерживают REST
- S имеет синтаксис запроса, очень похожий на SQL (но менее мощный). С помощью M вам нужно изучить новый синтаксис, который выглядит как json (также прямо изучать основы).
- с M вам нужно узнать, как вы архитектируете свою базу данных. Поскольку многие люди думают, что схематичность означает, что вы можете выбросить какой-либо барахло в базу данных и извлечь ее с легкостью, они могут быть удивлены тем, что Junk in, Junk out maxim работает. Я предполагаю, что то же самое в S, но не может утверждать это с уверенностью.
- оба не допускают регистр без учета регистра. В M вы можете каким-то образом использовать regex (уродливый/без индекса) преодолеть это ограничение без введения дополнительной логики поля ввода/приложения.
- в S-сортировке можно выполнить только в одном поле
- из-за 5s timelimit count in S может вести себя странно. Если прошло 5 секунд и запрос еще не закончен, вы получите частичное число и токен, который позволит продолжить запрос. Логика приложения отвечает за сбор всех этих данных подведением итогов.
- все это строка UTF-8, что заставляет боль в попке работать с не строковыми значениями (например, числа, даты ) в поддержке типа S. M путь более богатый.
- у обоих нет транзакций и соединений
- M поддерживает сжатие, что действительно полезно для nosql-хранилищ, где одно и то же имя поля снова сохраняется снова.
- S поддерживает только один индекс, M имеет один, составной, многокварковый, геопространственный и т.д..
- поддержка и репликация поддержки
Одна из самых важных вещей, которую вы должны учитывать, это то, что SimpleDB имеет очень рудиментарный язык запросов. Даже базовые вещи, такие как group by
, sum
average
, distinct
, а также обработка данных не поддерживаются, поэтому функциональность на самом деле не намного богаче, чем Redis/Memcached. С другой стороны, Mongo поддерживает богатый язык запросов.