Doctrineでパーティショニングするときのための技術調査その1

( Doctrine )

パーティショニングしながらDoctrineてつかえるのだろうかとふと思いしらべてみたらあった。 ちょっちバージョンは古いけど

ここからの引用

Please add ability not to create foreign key to database before releasing the last LTS version of Doctrine.

Creating foreign key is usually good, but there are some situations that we should not use foreign key.

  1. In MySQL, partitioning doesn’t support foreign key. Partitioning is a good practice for very large tables. If you want to get information about it, visit: http://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations.html
  2. As the case may be, foreign keys in database will rule out doing application-level-cascading-delete.
  3. MySQL outputs warnings when it tries creating foreign keys to some storage engines (e.g. MyISAM). We have to decrease warnings.

I have a patch that includes unit test. My changes are adding Doctrine::ATTR_CREATE_FOREIGN_KEY, and not to create foreign key to database when a value of Doctrine::ATTR_CREATE_FOREIGN_KEY is false. It will work on MySQL, PostgreSQL and Oracle.

Mysqlだとパーティショニングするときは外部キーを作成できない。 だから、Doctrineではそれに代替する機能としてアプリケーションレベルのカスケーディングデリート がある。

だからそれ使ってよってことか。

その下が重要で各ストレージエンジンで外部キーを作成しようとするとMySQLはワーニングを出力されてしまう。

でもまだエラー出ちゃうから減らしますよーっていってるのか。 α版の時点でパッチも出てるから対処はされてるみたいだね。

yamlからSQLにできるのかなー。

あ、パーティション関係のSQLは別ファイルで置いておいておけばいいか。

■参考URL 15.5. パーティショニングの制約と制限 Doctrine Project