Подумайте о масштабировании на Rails, вы бы написали SQL-код, написанный вручную? Использовать драгоценность сиквела? - PullRequest
2 голосов
/ 27 октября 2011

Если я хотел масштабировать приложение Rails, распределяя его базу данных на другой компьютер, основываясь на правилах авторизации (местоположение и роли пользователя). Таким образом, любой ресурс, связанный с этим местоположением, будет находиться в базе данных, посвященной этому местоположению.

Должен ли я приступить к основному написанию SQL, использовать что-то вроде гема Sequel или сохранить милость и магию ActiveRecord?

Ответы [ 2 ]

3 голосов
/ 27 октября 2011

Звучит так, как будто вы разбили свою базу данных, для которой Sequel имеет встроенную поддержку (http://sequel.rubyforge.org/rdoc/files/doc/sharding_rdoc.html). Я рекомендую использовать Sequel, но как ведущий разработчик я предвзят.

3 голосов
/ 27 октября 2011

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

Безусловно, многие сложные операции с базами данных могут хорошо управляться с помощью кэширования, а также правильной индексации и правильной загрузки. В некоторых случаях представления MySQL также помогают повысить производительность, а Rails справедливо относится к представлениям MySQL. После этого, если кто-то сможет загнать в тупик действительно медленные запросы, возможно, стоит преобразовать их в необработанный SQL и сэкономить некоторое время. Также Rails предлагает кеширование запросов к базе данных. MySQL также имеет механизм caching . Перед непосредственным выполнением необработанного SQL я бы удостоверился, что эти параметры (на самом деле гораздо больше, например, избегание ненужных объединений, поскольку операция объединения требует больших ресурсов) не могут дать мне то, что я ищу. Надеюсь, это поможет.

...