База данных альтернатив? - PullRequest
2 голосов
/ 19 ноября 2009

Мне было интересно, какие компромиссы для использования баз данных, и каковы были другие варианты? Кроме того, какие проблемы не очень хорошо подходят для баз данных?

Я занимаюсь реляционными базами данных.

Ответы [ 5 ]

5 голосов
/ 19 ноября 2009

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

Для некоторых задач наиболее распространенной базой данных является реляционная база данных. Это база данных, основанная на реляционной модели. Реляционная модель предполагает, что вы описываете свои данные в строках, принадлежащих таблицам, где у каждой таблицы есть заданное и фиксированное количество столбцов. Вы отправляете данные «для каждой строки», что означает, что вы должны предоставить строку в одном кадре, содержащую данные относительно всех столбцов вашей таблицы. Каждая отправленная строка обычно получает идентификатор, который уникален на уровне таблицы, иногда на уровне базы данных. Вы можете создавать отношения между сущностями в реляционной базе данных, например, говоря, что данная ячейка в вашей таблице должна ссылаться на строку другой таблицы, чтобы сохранить так называемую "ссылочную целостность".

Эта модель отлично работает, но она не единственная. В некоторых случаях данные лучше организовывать в виде дерева. Файловая система представляет собой иерархическую базу данных. начинается с корня, и все идет под этим корнем, в древовидной структуре. Другая модель - пара ключ / значение. Sleepycat BDB - это, по сути, хранилище сущностей ключ / значение.

LDAP - это еще одна база данных, которая имеет два преимущества: хранит довольно общие данные, она распределена по структуре и оптимизирована для чтения.

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

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

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

Установка ответа как CW, поскольку я, вероятно, говорю что-то строго не правильное. Не стесняйтесь редактировать.

1 голос
/ 19 ноября 2009

Не забудьте взглянуть на базы данных NOSQL. Это довольно новая технология, которая хорошо подходит для вещей, которые не помещаются / не масштабируются в реляционной базе данных.

1 голос
/ 19 ноября 2009

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

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

0 голосов
/ 19 ноября 2009

Используйте базу данных, если у вас есть данные для хранения и запроса.

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

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

Если вам нужно только хранить очень простые данные, альтернативными могут быть плоские файлы (текстовые файлы).

Примечание: вы использовали общий термин «база данных», но существует много разных типов и реализаций этих.

0 голосов
/ 19 ноября 2009
  • Для поисковых приложений , полнотекстовых поисковых систем (некоторые из которых интегрированы в традиционные СУБД, но некоторые из них нет) , может быть хорошей альтернативой, предоставляя как больше возможностей (различную лингвистическую осведомленность, способность иметь полуструктурированные данные, ранжирование ...), так и лучшую производительность.

  • Кроме того, я видел приложения, в которых данные конфигурации хранятся в базе данных, и хотя в некоторых случаях это имеет смысл, с использованием текстовых файлов (или YAML, XML и т. П.) И загрузка базовых объектов во время инициализации может быть предпочтительнее из-за замкнутой природы такой альтернативы и из-за простоты изменения и репликации таких файлов.

  • A плоский файл журнала , может быть хорошей альтернативой регистрации в СУБД, в зависимости от использования курса.

При этом за последние 10 лет или около того системы СУБД, в целом, добавили много функций, чтобы помочь им обрабатывать различные формы данных и различные возможности поиска (например, полнотекстовый поиск, упомянутый выше, XML, Smart). хранение / обработка больших двоичных объектов, мощных пользовательских функций и т. д.) , которые делают их более универсальными и, следовательно, довольно распространенным сервисом. Их сила остается в основном с реляционными данными, однако .

...