Tatsoft.ru (logo)

Подробности

Разработка на реальном объеме данных 

Теория

Боян вообще то, но хочется повториться — важно вести разработку и тестирование на реальном объеме данных.

Пишете вы какой-нибудь маленкий модуль, вбивая в качестве тестовых данных любимый Lorem Ipsum. И вроде все хорошо и быстро работает.

Теперь модуль начинают активно использовать заказчики и вы с ужасом понимаете, что уже при 50 записях у вас наступает ахтунг.

Резюме: забить в базу кучу тестовых данных и разрабатывать.

Реальный пример.

Есть пост, у него много комментариев, вываленных в виде дерева.
Все хорошо пока комментариев один-два и постов с десяток.
Все плохо, когда становится их больше.

Мы используем вот такой rake task спертый из Mephisto, чтобы забить в базу побольше тестовых данных.


namespace :db do
    desc "Load initial database fixtures (in db/bootstrap/*.yml) into the current environment's database.  Load specific fixtures using FIXTURES=x,y"
    task :bootstrap => :environment do
        require 'active_record/fixtures'
        require 'faker'

        ActiveRecord::Base.establish_connection(RAILS_ENV.to_sym)
        (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(RAILS_ROOT, 'db', 'bootstrap', '*.{yml,csv}'))).each do |fixture_file|
            Fixtures.create_fixtures('db/bootstrap', File.basename(fixture_file, '.*'))
        end
    end
end

Засовывает он, например, такую фикстуру.
В ней используется замечательный модуль Faker для генерации тестовых данных вроде текста, имен, email.



        <% post_comments[news_post_id] <

news_post_comments__:
  id:
  news_post_id:
  user_id:
  parent_id:
  name:
  email:
  ip_address: 10.0.0.1
  text: 

PS: Если вы всегда так делаете и постоянно проводите стрессовое тестирование своих проектов, то вы мега гуру — вам респект и уважуха

Комментарии

Олег Курносов:

Тимур, а как в итоге-то объекты с такими зависимости в БД описывать?

(Комментарий — 10:45 пп, Фев 03 )

Артем Голубев:

Все хитрее. На самом деле после всего этого когда у вас проект вышел в свободное плавание надо брать
живые данные и проводить оптимизацию, де-нормализацию в случае необходимости, перепроектирование на основе тестов с реальными данными. Мы, например, недавно так себе hashCode подобрали для объектиков и внедрили АОР, предварительно проверив, насколько он еще дозагрузит систему. Кстати, напомните мне, и я тут про AOP на русском напишу статейку, вам точно должна идея понравиться.
Кстати, знаете, какая разница, между навороченными банковскими системами и простыми интернет-магазинчиками в и-нете? Никакой. Только в случае с банками приходится с другими программульками интегрироваться. :)

(Комментарий — 6:52 дп, Март 26 )

Тимур Вафин:

Оптимизая продакш данных это уже другая песьня, до это надо еще дожить )

(Комментарий — 2:14 пп, Март 26 )

Оставить комментарий



Публикации по категориям

Самые читаемые

  • 4,901 прочтений: что такое wordpress (далее)
  • 4,540 прочтений: возможно самый отрицательный подкаст про RoR (далее)
  • 4,189 прочтений: Про нас написали Отцы! :) (далее)
  • 3,675 прочтений: Чем плох MySQL (далее)
  • 3,613 прочтений: Впервые в России конференция в формате BarCamp (далее)
  • 3,599 прочтений: 9 ошибок менеджера или почему задерживаются проекты (далее)
  • 3,143 прочтений: Конференция - взгляд из-за кулис (далее)
  • 2,681 прочтений: Автоматическая система синхронизация файлов между серверами (далее)
  • 2,232 прочтений: jQuery – Javascript нового поколения (далее)
  • 2,224 прочтений: Перепись казанских веб-студий. Часть 1. (далее)

Добавление в рейтинги

Bobrdobr Memori Google YahooMyWeb Digg Technorati Delicious
количество читателей онлайн и всего Рекомендовать tatsoft.ru в МойКруг.ру

Активные участники

 5 Users Online из них сейчас на сайте

Облако тэгов