Система баз данных, которая не является реляционной - PullRequest
6 голосов
/ 09 сентября 2008

Какие существуют другие типы систем баз данных? Я недавно натолкнулся на couchDB, который обрабатывает данные нереляционным способом. Это заставило меня задуматься о том, какие другие модели используют другие люди.

Итак, я хочу знать, какие существуют другие типы моделей данных. (Я не ищу никаких подробностей, просто хочу посмотреть, как другие люди обращаются с хранилищем данных, мой интерес чисто академический)

Те, кого я уже знаю:

  1. СУБД (mysql, postgres и т. Д.)
  2. Подход на основе документов (couchDB, lotus notes)
  3. пара ключ / значение (BerkeleyDB)

Ответы [ 13 ]

7 голосов
/ 09 сентября 2008

db4o

Цитата со страницы "about":

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

3 голосов
/ 09 сентября 2008

Старые нереляционные базы данных:

Сетевая база данных

Иерархическая база данных

Оба, в основном, вышли из моды, когда реляционное стало возможным.

2 голосов
/ 15 октября 2008

Семантическая сеть также является нереляционной парадигмой хранения данных. Отношений нет, все метаданные хранятся так же, как и данные, и каждый объект потенциально имеет свой уникальный набор атрибутов. Проекты с открытым исходным кодом, которые реализуют RDF, стандарт Semantic Web, включают Jena и Sesame .

2 голосов
/ 09 сентября 2008

Колонно-ориентированные базы данных тоже немного другое животное. Хотя многие из них поддерживают стандартный SQL реляционной базы данных. Они обычно используются для приложений типа хранилища данных.

1 голос
/ 17 апреля 2010

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

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

start node ----relation----> end node 

(в речи RDF: субъект --предикат -> объект). С помощью этой очень простой модели данных любая сеть данных может быть представлена ​​путем добавления все большего и большего числа триплетов, если вы придаете смысл узлам и отношениям.

RDF носит очень общий характер и представляет собой модель данных на основе графиков, которая хорошо подходит для критериев поиска для поиска всех троек с определенной комбинацией субъекта, предиката или объекта в любой комбинации. В конце концов, с помощью языка запросов SPARQL вы также можете выполнять более сложные запросы, операцию, которая сводится к поиску изоморфизма графа на графе, как с точки зрения топологии, так и с точки зрения значения края узла (мы увидим это в настоящее время). SPARQL позволяет вам только ВЫБРАТЬ (и аналогичные) запросы. Нет УДАЛИТЬ, без вставки, без обновления. Информация, которую вы запрашиваете (например, конкретные интересующие вас узлы), отображается в таблицу, которую вы получаете в результате запроса.

Теперь топология сама по себе ничего не значит. Для этого был изобретен язык Schema. На самом деле их больше одного, и называть их языками схемы в некоторых случаях очень ограниченно. Самыми известными и используемыми сегодня являются RDF-схема, OWL (Lite и Full), и они предшествуют устаревшим DAML + OIL. Смысл этих языков в том, чтобы свести вещи к минимуму, чтобы придать смысл узлам (предоставив им тип, также называемый тройным) и отношениям (ребрам). Кроме того, вы можете определить «диапазон» и «домен» этих отношений или иначе сказать, какой тип является начальным узлом, а какой тип является конечным узлом: например, вы можете сказать, что свойство «numberOfWheels» может применяться только соединить узел типа Vehicle с ненулевым целочисленным значением.

 ns:MyFiat --rdf:type--> ns:Vehicle
 ns:MyFiat --ns:numberOfWheels-> 4

Теперь вы можете использовать эти онтологии в двух направлениях: проверка и вывод. Валидация сегодня не так уж и хороша, но я видел примеры ее использования. Вывод - это то, что круто сегодня, потому что оно позволяет рассуждать. Вывод в основном берет RDF-граф, содержащий набор троек, берет онтологию, смешивает их в базу данных троекратного хранилища, которая содержит «механизм логического вывода» и, как по волшебству, механизм логического вывода изобретает тройки в соответствии с вашим онтологическим описанием. Пример: предположим, что вы просто храните эту информацию в базе данных

ns:MyFiat --ns:numberOfWheels--> 4

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

ns:MyFiat --rdf:type--> ns:Vehicle

потому что вы сказали в своей онтологии, что только объекты типа Vehicle могут быть описаны свойством numberOfWheels.

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

Дополнительными характеристиками триплетов являются формулы и контекстно-зависимое хранилище. Формулы - это утверждения (как обычно, объект-предикат в три раза), которые описывают нечто гипотетическое. Я никогда не использовал формулы, поэтому я не буду вдаваться в подробности того, чего не знаю. Контекстная осведомленность - это, в основном, подграфы: проблема с хранением троек заключается в том, что тебе нечего сказать, откуда эти тройки. Предположим, у вас есть два дилера, которые описывают одну и ту же цену компонента. Один говорит, что цена 5,99, а другой 4,99. Если вы просто сохраняете обе тройки в базе данных, теперь вы ничего не знаете о том, кто указывал каждую информацию. Есть два способа решения этой проблемы.

Одним из них является овеществление. Реификация означает, что вы храните дополнительные тройки, чтобы описать другую тройку. Это расточительно и превращает жизнь в ад, потому что вы должны заново определять каждую тройку, которую вы храните. Альтернатива - понимание контекста. Наличие контекстно-зависимого хранилища Это все равно, что иметь возможность упаковывать кучу троек в контейнер с меткой (идентификатор контекста). Теперь вы можете использовать этот идентификатор в качестве субъекта для дополнительных утверждений, следовательно, описывая набор троек в одном действии.

1 голос
/ 15 октября 2008

Нереляционная документно-ориентированная база данных, которую мы рассматривали: Apache CouchDB .

Apache CouchDB - это распределенная, отказоустойчивая и не требующая схемы документно-ориентированная база данных, доступная через RESTful HTTP / JSON API. Помимо других функций, он обеспечивает надежную инкрементную репликацию с двунаправленным обнаружением и разрешением конфликтов, а также выполняет запрос и индексирование с использованием механизма таблично-ориентированного представления с JavaScript, выступающим в качестве языка определения представления по умолчанию.

Наш интерес заключался в предоставлении хранилища пользовательских настроек распределенного доступа, которое было бы неуязвимо для изменения формы, к которой мы могли бы сериализовать объекты предпочтений из Java и легко обращаться к ним с помощью Javascript из клиентского приложения на основе XULRunner.

1 голос
/ 09 сентября 2008

Существуют объектные базы данных (например, Gemstore). Google Big-Table и Amason Simple Storage. Я не уверен, как бы вы классифицировали, но оба они основаны на уменьшении карты.

1 голос
/ 09 сентября 2008
1 голос
/ 09 сентября 2008

Разве Amazon 100 * * SimpleDB не является нереляционным?

0 голосов
/ 17 апреля 2010

База данных световой корреляции - это новая революционная нереляционная база данных. Система управления базами данных корреляции (CDBMS) не зависит от модели данных и предназначена для эффективной обработки незапланированных специальных запросов в среде аналитической системы. В отличие от систем управления реляционными базами данных или баз данных, ориентированных на столбцы, корреляционная база данных использует архитектуру хранения на основе значений (VBS), в которой каждое уникальное значение данных сохраняется только один раз, а автоматически генерируемая система индексации поддерживает контекст для всех значений (данные 100% проиндексировано). Запросы выполняются с использованием естественного языка вместо SQL (NoSQL).

Узнайте больше по адресу: www.datainnovationsgroup.com

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