Внешние ключи и кластер - PullRequest
2 голосов
/ 10 июля 2011

У меня есть схема, которая использует тип таблицы InnoDB и внешние ключи.Я планирую использовать MySQL кластер, и я просто хочу убедиться, что я могу использовать тип таблицы "InnoDB" и ограничения внешнего ключа будут по-прежнему действительны.

Обновление:

Согласно документации:

Возможно создание таблиц с использованием других механизмов хранения (таких как MyISAM или InnoDB) на сервере MySQL, используемом с MySQL Cluster, но эти таблицы не NDBне участвовать в кластеризации;каждая такая таблица строго локальна для отдельного экземпляра сервера MySQL, на котором она создается.

Означает ли это, что, если я создаю таблицу InnoDB, у меня может быть ограничение внешнего ключа?Я понимаю, что эти таблицы не будут участвовать в кластеризации.

Ответы [ 3 ]

6 голосов
/ 10 июля 2011

Нет, все они используют NDBCLUSTER в качестве механизма хранения и ограничения внешнего ключа недоступны до версии 5.6 / MySQL Cluster NDB 7.3 .Начиная с возможны внешние ключи MySQL Cluster NDB 7.3 .

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

В таком случае, конечно, доступны все функции механизма, поэтомудействительно, таблица InnoDB может иметь ограничения внешнего ключа, но те же правила применяются с InnoDB <> NDB, что и InnoDB <> MyISAM: MySQL не будет жаловаться, если вы упомянете столбец, расположенный в таблице NDB / MyISAM, в определении таблицы InnoDB,но также не будет обеспечивать целостность.

2 голосов
/ 09 июля 2012

Возможно программно применять внешние ключи в NDB (или любом механизме хранения MySQL, который не поддерживает их изначально): http://dev.mysql.com/tech-resources/articles/mysql-enforcing-foreign-keys.html

Или, если вы можете подождать MySQL Cluster 7.3: https://blogs.oracle.com/MySQL/entry/mysql_cluster_7_3_labs

0 голосов
/ 27 июля 2011

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

...