Подтвердить что ты не робот

Какая разница между NoSQL и колоно-ориентированной базой данных?

Чем больше я читал о NoSQL, тем больше он начинает звучать как база данных, ориентированная на столбцы.

Какая разница между NoSQL (например, CouchDB, Cassandra, MongoDB) и базой данных, ориентированной на столбцы (например, Vertica, MonetDB)?

4b9b3361

Ответ 1

Некоторые базы данных NoSQL представляют собой базы данных, ориентированные на столбцы, а некоторые базы данных SQL также ориентированы на столбцы. Является ли база данных ориентированной на столбцы или строки ориентированной на физическую память деталью базы данных и может быть верной как для реляционных, так и для нереляционных (NoSQL) баз данных.

Vertica, например, представляет собой ориентированную на столбцы реляционную базу данных, поэтому на самом деле она не будет квалифицироваться как хранилище данных NoSQL.

В хранилище данных "NoSQL movement" лучше определить как нереляционную, совместно используемую, горизонтально масштабируемую базу данных без (обязательно) ACID. Некоторые базы данных, ориентированные на столбцы, могут быть охарактеризованы таким образом. Помимо хранилищ столбцов, реализация NoSQL также включает в себя хранилища документов, хранилища объектов, магазины кортежей и хранилища графиков.

Ответ 2

База данных NoSQL - это другая парадигма из традиционных баз данных, основанных на схеме. Они предназначены для масштабирования и хранения документов, таких как данные json. Очевидно, что у них есть способ запроса информации, но вы должны ожидать синтаксиса, например eval ("person = * и age > 10) для получения данных. Даже если они поддерживают стандартный интерфейс SQL, они предназначены для чего-то другого, поэтому, если вам нравится SQL вы должны придерживаться традиционных баз данных.

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

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

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

Ответ 3

Я бы предложил прочитать раздел таксономии в записи wikiipedia NoSQL, чтобы понять, как различные базы данных NoSQL являются традиционными схемами, ориентированной базы данных. Ориентация на столбцы подразумевает строки и столбцы, что подразумевает (двумерную) схему, в то время как базы данных NoSQL имеют тенденцию к отсутствию схемы (хранилища для ключей) или имеют структурированное содержимое, но без формальной схемы (хранилища документов).

Для хранилищ документов структура и содержимое каждого "документа" не зависят от других документов в той же "коллекции". Добавление поля обычно представляет собой изменение кода, а не изменение базы данных: новые документы получают запись для нового поля, тогда как старые документы считаются нулевыми для несуществующего поля. Точно так же "удаление" поля может означать, что вы просто перестаете ссылаться на него в своем коде, а не на необходимость удаления его из каждого документа (если только пространство не стоит на высоком уровне, а затем вы можете удалить только те из них, самое большое содержимое). Сравните это с тем, как изменить всю таблицу для добавления или удаления столбца в традиционной базе данных столбцов/столбцов.

Документы могут также содержать списки, а также другие вложенные документы. Здесь образец документа из MongoDB (сообщение из блога или другого форума), представленный как JSON:

{
  _id : ObjectId("4e77bb3b8a3e000000004f7a"),
  when : Date("2011-09-19T02:10:11.3Z"),
  author : "alex",
  title : "No Free Lunch",
  text : "This is the text of the post.  It could be very long.",
  tags : [ "business", "ramblings" ],
  votes : 5,
  voters : [ "jane", "joe", "spencer", "phyllis", "li" ],
  comments : [
    { who : "jane", when : Date("2011-09-19T04:00:10.112Z"),
      comment : "I agree." },
    { who : "meghan", when : Date("2011-09-20T14:36:06.958Z"),
      comment : "You must be joking.  etc etc ..." }
  ]
}

Обратите внимание, что "комментарии" представляют собой список вложенных документов со своей независимой структурой. Запросы могут "проникать" в эти документы из внешнего документа, например, для поиска сообщений с комментариями Джейн или сообщений с комментариями определенного диапазона дат.

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

Ответ 4

NoSQL - термин, используемый для Не только SQL, который охватывает четыре основные категории: базы данных Key-Value, Document, Column Family и Graph.

Базы данных Key-value хорошо подходят для приложений, которые часто читают и записывают небольшие файлы вместе с простыми моделями данных. Эти записи сохраняются и извлекаются с помощью ключа, который уникально идентифицирует запись и используется для быстрого поиска данных в базе данных.

например. Redis, Riak и т.д.

Базы данных документов имеют возможность хранить различные атрибуты вместе с большими объемами данных

например. MongoDB, CouchDB и т.д.

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

, например, Cassandra, HBase и т.д.

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

, например Neo4j, InfiniteGraph и т.д.

Прежде чем понимать NoSQL, вы должны понимать некоторые ключевые понятия.

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

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

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

В большинстве случаев только два из трех свойств будут удовлетворены базами данных NoSQL.

Из вашего вопроса,

CouchDB: AP (доступность и раздел) и база данных документов

Cassandra: AP (доступность и раздел) и база данных столбцов

MongoDB: CP (согласованность и раздел) и база данных документов

Вертикальная: CA (постоянство и доступность) и база данных семейства столбцов

MonetDB: ACID (устойчивость к стойкости к изоляции Atomity) и реляционная база данных

От: http://blog.nahurst.com/visual-guide-to-nosql-systems

введите описание изображения здесь

Посмотрите на это article1, article2 и ppt для различных сценариев для выбора конкретного типа базы данных.

Ответ 6

Как писал @tuinstoel, статья отвечает на ваш вопрос в пункте 3:

3. Интерфейс. Группа А отличается тем, что является частью Движение NoSQL и обычно не имеют традиционный интерфейс SQL. Группа B поддерживает стандартный SQL интерфейсы.

Ответ 7

Вот как я это вижу: в столбцах Ориентированные базы данных имеют дело с тем, как данные физически хранятся на диске. Как следует из названия, каждый столбец хранится в отдельном пространстве/файле. Это позволяет сделать две важные вещи:

  • Вы добиваетесь большей степени сжатия порядка 10: 1, потому что у вас есть один тип данных для обработки.
  • Вы добиваетесь лучшей производительности чтения данных, поскольку избегаете сканирования целых строк и можете просто выбрать столбцы, указанные в запросе SELECT.

NoSQL, с другой стороны, представляет собой совершенно новое поколение баз данных, которые определяют "логические" совокупные уровни для объяснения данных. Некоторые рассматривают данные как имеющие иерархическую взаимосвязь (совокупность - это "node" ), в то время как другие рассматривают данные как документы (которые являются совокупным уровнем). Они не диктуют стратегию физического хранения (некоторые могут делать, но отвлечены от конечного пользователя).

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

В столбцах Ориентированные базы данных по-прежнему обрабатывают реляционные данные, хотя исключают необходимость в индексе и т.д.