Я предполагаю, что с осколками мы говорим о горизонтальном, а не вертикальном разделении ( вот различия в Википедии ).
Прежде всего, растяните вертикальное разбиение настолько, насколько это возможно, прежде чем рассматривать горизонтальное разбиение. В Rails легко иметь разные модели, указывающие на разные машины, и для большинства сайтов Rails это достаточно далеко.
Для горизонтального разбиения в идеальном мире это будет обрабатываться на прикладном уровне в Rails. Но хотя это не сложно, это не тривиально в Rails, и к тому времени, когда вам это нужно, обычно ваше приложение выходит за рамки, когда это выполнимо, так как вызовы ActiveRecord разбросаны повсюду. И никому, разработчикам или руководству, не нравится работать над ним раньше, чем вам это нужно, поскольку все предпочитают работать над функциями, которые пользователи будут использовать сейчас, а не над разделами, которые могут не появиться в течение многих лет после взрыва трафика.
Слой ActiveRecord ... не так просто, как я вижу. Потребовалось бы много мартышек, исправляющих внутренности Rails.
На Спок мы закончили с этим, используя пользовательский прокси MySQL и открыли его в SourceForge как Спок-прокси . ActiveRecord считает, что он общается с одним компьютером баз данных MySQL, когда на самом деле он общается с прокси-сервером, который затем общается с одной или несколькими базами данных MySQL, объединяет / сортирует результаты и возвращает их в ActiveRecord. Требуется всего несколько изменений в вашем коде Rails. Загляните на страницу Spock Proxy SourceForge, чтобы узнать подробности и причины, по которым мы пошли по этому пути.