2014-09-08 7 views
0

Я структурирую настройки конфигурации базы данных, абстрагируя, насколько это возможно, данные конфигурации.
В наиболее распространенных случаях ЛАМПЫ, подключение к базе данных требует следующих четыре информации:Настройки конфигурации базы данных базы данных

  • DB_HOST
  • db_name
  • db_user
  • пароль_базы_данного

Я хотел бы понять два вещи:

1 - Учетные данные r приподнято до хозяин или db?

Если пользователя и пароль связаны с хозяином, они могут получить доступ ко всем базам данных, доступных на этом хосте, так что я мог бы представить конфигурационные данные таким образом (независимо от того, что представляет собой массив, объект или другое):

db_config 
    └─db_host 
     ├─db_user 
     ├─db_password 
     └─databases 
      ├─db_name 
      └─db_engine 

Если пользователь и пароль вместо этого связан с конкретной базы данных, они могут получить доступ к только db_name указано; в этом случае я мог бы схематический таким образом данные конфигурации:

db_config 
    └─db_host 
     └─databases 
      └─db_name 
       ├─db_engine 
       ├─db_user 
       └─db_password 

2 - Могут базы данных с другим двигателем жить на тот же хост?

Базы данных могут питаться от разных двигателей (например, PostgreSQL, MySQL, MSSQL, Oracle, Firebird и т. Д.).
Если учетные данные связаны с хозяином, и если база данных с различными двигателями могут cohexist на том же хосте, данные конфигурации могут быть представлены следующим образом:

db_config 
    └─db_host 
     ├─db_user 
     ├─db_password 
     └─databases 
      └─db_name 
       └─db_engine 

Но эта структура не позволяет баз данных с разными движками есть с именем.
Могут ли базы данных с разными двигателями коэксист на том же хосте и использовать одно и то же имя?
Если да, то данные конфигурации могут быть структурированы таким образом:

структура
db_config 
    └─db_host 
     └─db_engine 
      └─databases 
       ├─db_name 
       ├─db_user 
       └─db_password 

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

+0

Схемы базы данных не являются деревьями - определяют их как таблицы, а в некоторых случаях некоторые таблицы будут иметь два внешних ключа в качестве первичных ключ - таким образом, фиксация «структуры не позволяет базе данных s с разными двигателями, чтобы иметь одно и то же имя « – Mark

+0

Итак, вы говорите мне, что 1. учетные данные связаны с базой данных, а не с хостом, 2. у одного хоста могут быть базы данных с разными двигателями и с тем же именем, верно? –

+0

Да и я подозреваю больше различий -0 Что вы подразумеваете под именем сервера данных, из которого они могут быть несколько одного типа, может иметь несколько баз данных, а учетные данные могут отличаться между серверами во всех dbs и, возможно, в базе данных для некоторых систем. Этот вопрос слишком брэд, поскольку есть много комбинаций – Mark

ответ

1

Это довольно сложно, поскольку разные поставщики имеют разные функции.

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

Некоторые базы данных поддерживают Active Directory/LDAP/Kerberos, SSL-сертификаты, PAM и т. Д. Для входа в систему, а не только имя пользователя и пароль.

Некоторые другие точки:

  • Сервер базы данных может жить в нескольких хостов благодаря репликации
  • Один компьютер может разместить несколько серверов баз данных на одном IP-адресе (через разные порты), или на разных IP-адреса. См. Кластеры PostgreSQL
  • В кластере базы данных может быть несколько экземпляров. См экземпляры SQL Server
  • Кластер базы данных может иметь множество баз данных
  • База данных может иметь множество схем
  • MySQL называет свои схемы «базы данных»

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

Смежные вопросы