10

Я прочитал документацию и смог найти что-нибудь, что мне помогло. Я также прочитал большое количество статей в блогах, но ничто, кажется, не отвечает на мой вопрос напрямую:Ruby on Rails/ActiveRecord и табличные разделы

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

+0

Какое управление разделом вы хотите? –

+0

@RickJames Хорошо, давайте начнем с любого вида вообще. В настоящее время я выполняю разделы по диапазонам дат, которые имеют два дня. Я вообще не знаю о каком-либо встроенном управлении для разделов с Rails, и я не сталкиваюсь с какими-либо драгоценными камнями, которые хотят сделать это разумным способом. –

+0

Какова ваша конечная цель при ручном разбиении? Возможно, вы пытаетесь скрыть кошку неправильным образом, и есть менее ручной процесс (например, добавление соответствующих индексов)? ActiveRecord - это абстракция, и добавление поддержки чего-то, что MySQL уже пытается отвлечь (AFAIK), похоже, будет довольно неприятным. – hoffmanc

ответ

0

Дополнительное решение имеет возникла с тех пор, как я впервые задал этот вопрос. Хотя решение действительно требует использования Postgresql над MySQL или Maria, это не является высоким препятствием, так как это более или менее база данных по умолчанию для Rails.

Драгоценный камень Partitioned Github специально обрабатывает всю механику разбиения красивым, Railsy способом.

0

Я не вижу, как ActiveRecord может делать такие вещи, как DROP PARTITION и REORGANIZE PARTITION. Может ли он даже вызвать хранимую процедуру? Если это так, то постройте один, похожий на то, что находится в my blog, и вызовите его из Rails.

+0

Все же миграция полностью поддерживает его. –

0

Да, вы можете! Но я не думаю, что есть драгоценный камень, который сделает это за вас.

Чтобы выполнить управление разделами вам нужно сделать тяжелую работу самостоятельно и отправить команду, которую нужно запустить на БД непосредственно через соединение следующим образом

ActiveRecord::Base.connection.execute("ALTER TABLE your_table drop partition p0") 
+0

Mm .. Что это говорит, «нет ничего, чтобы поддержать его, так что сделайте сам SQL-код». Не совсем то, что я ищу. Если я должен сам выполнить SQL, я бы не стал беспокоиться со всеми накладными расходами на загрузку структуры Rails вначале. Я бы просто использовал сценарии, которые у меня есть. –

+0

есть несколько инструментов для управления разделами для postreSQL, возможно, вам стоит попробовать его вместо MySQL или написать этот камень самостоятельно и сделать все для всех программистов на земле. – Tata

+0

Я использую разделы в mysql экстенсивно и никогда не сталкивался с чем-либо другим, кроме использования необработанного SQL в activerecord для определения и управления ими. – TJChambers