Я хочу воспользоваться новым разделением в MySQL 5.1, но с использованием стандартной модели ActiveRecord. Проблема, с которой я столкнулся, состоит в том, что для использования первичного ключа в таблице для разделения необходимо включить столбцы, используемые в функции разделения. (http://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations-partitioning-keys-unique-keys.html)
Теперь я хочу иметь автоинкрементное поле 'id' (которое обычно используется в качестве первичного ключа в Rails), но я хочу разделить, используя другой столбец, в данном случае 'task_id'. Важно отметить, что я не хочу использовать составные первичные ключи в моем приложении Rails. У меня вопрос такой:
Если я настрою таблицу следующим образом:
"CREATE TABLE `annotations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`task_id` int(11) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`value` text,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`, `task_id`),
KEY `index_annotations_on_task_id` (`task_id`),
KEY `index_annotations_on_user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
PARTITION BY RANGE(task_id)(
PARTITION 1_to_5 VALUES LESS THAN (6),
PARTITION 6_to_10 VALUES LESS THAN (11),
PARTITION 11_to_15 VALUES LESS THAN (16))"
, где у меня есть первичный ключ, состоящий из столбцов 'id' и 'task_id', и я не делаю ничего особенного с моделью ActiveRecord, настраиваю ли я себя на какие-либо головные боли в будущем?
По сути, я создаю таблицу с первичным ключом, основанную на двух столбцах, но не говорю ActiveRecord о втором столбце, поскольку у меня все еще есть поле идентификатора с автоинкрементом. Может кто-нибудь увидеть какие-либо проблемы с этим подходом?