Хинт: в mysql - database == schema, в postgres schema==namespace ~ mysql database, тогда как postgres database - некий глобальный контейнер для схем.
Примерно так же у oracle и без канистры водки порой сложно разобраться, что где и как.
Хм. Забавно. Не знал. Наличие схем как раз и стало основной причиной моего ухода в PostgreSQL. Но видимо есть какие-то нюансы.
- Мне не удалось сейчас найти достаточно информации о схемах в MySQL, по крайней мере чтобы понять их отличие от понятия database. В «мире» PostgreSQL информации много и очень «тонкой» и детальной. То есть в любом случае, в PG схемы гораздо боле распространены.
- Насколько я понял, в MySQL — схема просто синоним database. Но что это такое и чем это отличается от database — непонятно
- Для PostgreSQL в Интернете куча описаний, как написать ActiveRecord применительно к схемам Postgres. Но нет описания, как применить схемы MySQL в ActiveRecord.
Видимо, есть все же какие-то различия, и предположу, что существенные. Был бы рад почитать мнение того, кто детально разбирался с тем и другим.
Наиболее вменяемое, но ничего не объясняющее толком объяснение я нашел вот тут:
- 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.
Вы же совершенно правильно пишете: в MySQL нет отличия понятия database от schema. Я бы даже грубо сказала, что в MySQL нет database в том виде, в котором они есть в PostgreSQL или в Oracle. В MySQL только схемы. И да, их принято называть database =)
То, что в PostgreSQL называется database — это сама инсталляция MySQL. То есть, чтобы начать работать с PostgreSQL нужно его установить, затем создать базу, а уже потом создавать схемы. В MySQL этапа создания базы не существует. Если вы хотите имитировать PostgreSQL-базы в MySQL просто запустите несколько instance mysqld на одной машине (с разными портами, datadir и т.п.)
То, что в PostgreSQL называется database — это сама инсталляция MySQL. То есть, чтобы начать работать с PostgreSQL нужно его установить, затем создать базу, а уже потом создавать схемы. В MySQL этапа создания базы не существует. Если вы хотите имитировать PostgreSQL-базы в MySQL просто запустите несколько instance mysqld на одной машине (с разными портами, datadir и т.п.)
Комментариев нет:
Отправить комментарий