понедельник, 12 января 2015 г.

database и schema в postgres и mysql (с хабра)

http://habrahabr.ru/post/246339/#comment_8190995
Хинт: в mysql - database == schema, в postgres schema==namespace ~ mysql database, тогда как postgres database - некий глобальный контейнер для схем.
Примерно так же у oracle и без канистры водки порой сложно разобраться, что где и как.


Stan_1#
Хм. Забавно. Не знал. Наличие схем как раз и стало основной причиной моего ухода в PostgreSQL. Но видимо есть какие-то нюансы.

  1. Мне не удалось сейчас найти достаточно информации о схемах в MySQL, по крайней мере чтобы понять их отличие от понятия database. В «мире» PostgreSQL информации много и очень «тонкой» и детальной. То есть в любом случае, в PG схемы гораздо боле распространены.
  2. Насколько я понял, в MySQL — схема просто синоним database. Но что это такое и чем это отличается от database — непонятно
  3. Для PostgreSQL в Интернете куча описаний, как написать ActiveRecord применительно к схемам Postgres. Но нет описания, как применить схемы MySQL в ActiveRecord. 


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

    Наиболее вменяемое, но ничего не объясняющее толком объяснение я нашел вот тут:
    www.estelnetcomputing.com/index.php?/archives/10-Database-vs.-Schema-Definition-in-Mysql-vs.-Postgres.html

    In mysql a database is a schema. The two words can be used interchangeably in most commands. For instance, you could say create database dbname, or create schema dbname and achieve the same result.

    Postgres has a different concept of schema. It is a namespace that contains tables, functions, operators and data types. It is essentially a layer between the database and the tables. In postgres, a database may contain many schemas and those schemas may contain the same tables or different ones. The «public» schema is the default schema in a database.
0
svetasmirnova#
Вы же совершенно правильно пишете: в MySQL нет отличия понятия database от schema. Я бы даже грубо сказала, что в MySQL нет database в том виде, в котором они есть в PostgreSQL или в Oracle. В MySQL только схемы. И да, их принято называть database =)

То, что в PostgreSQL называется database — это сама инсталляция MySQL. То есть, чтобы начать работать с PostgreSQL нужно его установить, затем создать базу, а уже потом создавать схемы. В MySQL этапа создания базы не существует. Если вы хотите имитировать PostgreSQL-базы в MySQL просто запустите несколько instance mysqld на одной машине (с разными портами, datadir и т.п.)
+1
david_mz#
В Постгресе немного сложнее иерархия, а именно: cluster (собственно инсталляция постгрес-сервера, он один) → database (много в кластере) → schema (много в базе).

Комментариев нет:

Отправить комментарий