Шифрование базы данных и Rails

Какой лучший способ справиться с окопченной базой данных в Rails? Следует ли обрабатывать очертания на уровне приложения, уровне активной записи, уровне драйвера базы данных, прокси-слое или вообще что-то еще? Каковы плюсы и минусы каждого?

Ответ 1

FiveRuns имеют жемчужину с именем DataFabric, который выполняет наложение уровня приложения и репликацию master/slave. Возможно, стоит проверить.

Ответ 2

Я предполагаю, что с осколками мы говорим о горизонтальном разбиении и не вертикальном разбиении (вот различия в Википедии).

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

Для горизонтального разбиения в идеальном мире это будет обрабатываться в прикладном уровне в Rails. Но в то время как это не сложно, это не тривиально в Rails, и к тому моменту, когда вы в этом нуждаетесь, обычно ваше приложение выросло за пределы того, где это возможно, поскольку у вас есть звонки ActiveRecord, посыпанные повсеместно. И никто, разработчики или менеджеры, не любит работать над этим, прежде чем он вам понадобится, поскольку все предпочтут работать с функциями, которые пользователи будут использовать сейчас, а не на разделении, которое может не вступить в игру в течение многих лет после того, как ваш трафик взорвался.

Уровень ActiveRecord... нелегко из того, что я вижу. Требуется много исправлений обезьян в внутренности Rails.

В Spock мы закончили работу с использованием пользовательского прокси-сервера MySQL и откройте его на SourceForge как Spock Proxy. ActiveRecord думает, что он разговаривает с одной машиной базы данных MySQL, когда в действительности она разговаривает с прокси-сервером, который затем разговаривает с одной или несколькими базами данных MySQL, объединяет/сортирует результаты и возвращает их в ActiveRecord. Требуется только несколько изменений в коде Rails. Взгляните на страницу Spock Proxy SourceForge для получения более подробной информации и наших причин для перехода по этому маршруту.

Ответ 4

Подключение Rails к нескольким базам данных не имеет большого значения - у вас просто есть подкласс ActiveRecord для каждого осколка, который переопределяет свойство соединения. Это делает его довольно простым, если вам нужно совершать перекрестные осколки. Затем вам просто нужно написать небольшой код, когда вам нужно совершать вызовы между осколками.

Мне не нравится идея Хэнка о разделении экземпляров рельсов, потому что кажется сложным вызвать код между экземплярами, если у вас нет большой общей библиотеки.

Также вы должны посмотреть, как сделать Masochism перед тем, как начать очертание.

Ответ 5

На мой взгляд, самый простой способ - поддерживать 1:1 между экземплярами рельсов и блоками DB.

Ответ 6

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

https://github.com/minhnghivn/my_replication