SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Introduction
      Ruby On Rails
             NoSQL
         Conclusion




Breizhcamp - Nosql - Ruby

          Nicolas Ledez
   from.slideshare@ledez.net


           17 Juin 2011




                                                   logo


      Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                Ruby On Rails
                       NoSQL
                   Conclusion


Nicolas Ledez




                     <me>


                                                             logo


                Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                Ruby On Rails
                       NoSQL
                   Conclusion


Nicolas Ledez




                Depuis bientôt 5 ans

                                                             logo


                Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                Ruby On Rails
                       NoSQL
                   Conclusion


Nicolas Ledez




    Chef de projet technique


                                                             logo


                Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                    Ruby On Rails
                           NoSQL
                       Conclusion


Nicolas Ledez




                http ://www.breizhcamp.org/
                       Cloud et NoSQL
                                                                 logo


                    Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                     Ruby On Rails
                            NoSQL
                        Conclusion


Nicolas Ledez




                http ://www.rennesonrails.com/
                      Coding Dojo & Confs



                                                                  logo


                     Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                  Ruby On Rails
                         NoSQL
                     Conclusion


Nicolas Ledez




                 http ://www.granit.org/
                Forum Graphotech Cloud


                                                               logo


                   Nicolas Ledez   Breizhcamp - Nosql - Ruby
Introduction
                Ruby On Rails
                       NoSQL
                   Conclusion


Nicolas Ledez




                    </me>


                                                             logo


                Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                       Ruby On Rails
                              NoSQL
                          Conclusion


Plan


  1    Introduction

  2    Ruby On Rails

  3    NoSQL

  4    Conclusion



                                                                    logo


                       Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                                       Sondage
                      Ruby On Rails
                                       NoSQL
                             NoSQL
                                       Ruby & Rails
                         Conclusion


Qui connaît ?



     NoSQL
         SQL
         Clé/valeur
         Document
     Ruby On Rails
         Ruby
         Rails




                                                                   logo


                      Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                          Sondage
         Ruby On Rails
                          NoSQL
                NoSQL
                          Ruby & Rails
            Conclusion


NoSQL




        Not Only SQL



                                                      logo


         Nicolas Ledez    Breizhcamp - Nosql - Ruby
Choix du moteur
Ruby & Rails




     Ruby
         Plusieurs VM Ruby (MRI, JRuby, MacRuby, Rubinus)
         24,898 gems (en juin 2011)
         +185 000 projets Ruby sur Github
     Rails
         DRY
         Convention over Configuration
         MVC, migrations, Active Record, etc
Ruby On Rails - i18n



  $ cat config/locales/fr.yml
  fr:
    listing_tickets: "Liste des tickets"
    name: "Nom"
    unknown: "Inconnu"
    back: "Retour"
    are_you_sure: "Etes-vous sur ?"
    editing_ticket: "Edition du ticket"
  $ grep listing_tickets app/views/tickets/index.html.
  <h1><%= t(’listing_tickets’) %></h1>
Ruby On Rails - generators


  $ rails generate model ticket name:string
    description:text
  $ cat db/migrate/20110602142024_create_tickets.rb
  class CreateTickets < ActiveRecord::Migration
    def change
      create_table :tickets do |t|
        t.string :name
        t.text :description

        t.timestamps
      end
    end
  end
Ruby On Rails - Active Record



  $ cat app/models/ticket.rb
  class Ticket < ActiveRecord::Base
    validates_presence_of :name
    validates_presence_of :status
  end
  $ rake db:migrate
  -- create_table("tickets", {:force=>true})
     -> 0.0696s
  DB -> Model -> Controller -> Vue
Introduction
                           Ruby On Rails    Redis
                                  NoSQL     MongoDB
                              Conclusion


Redis



        Manipulation de clés / valeurs
        Commandes simples
        Valeurs : string, list, set, sorted set, hashes
        Expiration des clés possible
        Utilisation : cache, session, compteurs, queue




                                                                        logo


                           Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                   Ruby On Rails    Redis
                          NoSQL     MongoDB
                      Conclusion


Redis exemples


 Clé/valeur        List                                 Sets
 SET key "value"   LPUSH key 1                          SADD key 1
 GET key           LRANGE key 0 -1                      SMEMBERS key
 DEL key           RPOP key                             SISMEMBER key
 INCR key          LLEN key                             2
 EXPIRE key 5      LTRIM key 0 1                        SRANDMEMBER
 EXPIREAT key                                           key
 <timestp>                                              SREM key 3
 TTL key


                                                                        logo


                   Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                       Ruby On Rails    Redis
                              NoSQL     MongoDB
                          Conclusion


Redis avec Ruby On Rails - backend

  Ajout de "gem ’redis’" dans le Gemfile
  $ cat config/initializers/i18n_backend.rb
  I18n.backend = I18n::Backend::KeyValue.new(
    Redis.new)
  $ cat config/initializers/i18n_backend.rb
  TRANSLATION_STORE = Redis.new
  I18n.backend = I18n::Backend::Chain.new(
    I18n::Backend::KeyValue.new(TRANSLATION_STORE),
    I18n.backend)

                                                                    logo


                       Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                     Ruby On Rails    Redis
                            NoSQL     MongoDB
                        Conclusion


Redis avec Ruby On Rails - frontend

  $ cat app/controllers/translations_controller.rb
  class TranslationsController < ApplicationController
    def index
      @translations = TRANSLATION_STORE
    end

    def create
      I18n.backend.store_translations(params[:locale],
        {params[:key] => params[:value]}, :escape => false)
      redirect_to translations_url,
        :notice => "Added translations"
    end
  end
                                                                  logo


                     Nicolas Ledez    Breizhcamp - Nosql - Ruby
Redis avec Ruby On Rails - hack ROR 3.1 rc1 1/3

  $ cat config/environment.rb
  # Load the rails application
  require File.expand_path(’../application’, __FILE__)

  module I18n
   module Backend
    class KeyValue
      module Implementation
       def store_translations(locale, data, options = {})
          #@store[key] = ActiveSupport::JSON.encode(value) unless
          @store[key] = ActiveSupport::JSON.encode([value]) unless
         end
       end
      end
    end
   end
  end
Redis avec Ruby On Rails - hack ROR 3.1 rc1 2/3


  module I18n
   module Backend
    class KeyValue
      module Implementation
      protected
       def lookup(locale, key, scope = [], options = {})
        #value = ActiveSupport::JSON.decode(value) if value
        value = ActiveSupport::JSON.decode(value)[0] if value
       end
      end
    end
   end
  end

  # Initialize the rails application
  Tickets::Application.initialize!
Redis avec Ruby On Rails - hack ROR 3.1 rc1 3/3
Introduction
                   Ruby On Rails    Redis
                          NoSQL     MongoDB
                      Conclusion


MongoDB




    Base orientée documents (BSON)
    Un système de requêtes évolué
    Scalable
    Hautes performances
    Sans schéma




                                                                logo


                    Nicolas Ledez   Breizhcamp - Nosql - Ruby
Introduction
                     Ruby On Rails    Redis
                            NoSQL     MongoDB
                        Conclusion


MongoDB exemples 1/2


  show dbs
  use db_name
  show collections

  db.foo.find();

  db.foo.save({ name : "sara"});

  person = db.people.findOne( { name : "sara" } );
  person.city = "New York";
  db.people.save( person );
                                                                  logo


                     Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                  Ruby On Rails    Redis
                         NoSQL     MongoDB
                     Conclusion


MongoDB exemples 2/2



  db.foo.drop()

  db.foo.remove()
  db.foo.remove( { name : "sara" } )

  db.foo.getIndexKeys()
  db.foo.ensureIndex({ _field_ : 1 })



                                                               logo


                  Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                        Ruby On Rails    Redis
                               NoSQL     MongoDB
                           Conclusion


Avec Rails - config


  config/initializers/mongo.rb
  MongoMapper.connection = Mongo::Connection.new(’localhost’, 270
  MongoMapper.database = "#myapp-#{Rails.env}"

  if defined?(PhusionPassenger)
      PhusionPassenger.on_event(:starting_worker_process) do |fork
        MongoMapper.connection.connect if forked
      end
  end




                                                                     logo


                        Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                       Ruby On Rails    Redis
                              NoSQL     MongoDB
                          Conclusion


Avec Rails - model



  app/models/note.rb
  class Note
    include MongoMapper::Document

    key :title, String, :required => true
    key :body, String
  end




                                                                    logo


                       Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction
                    Ruby On Rails    Redis
                           NoSQL     MongoDB
                       Conclusion


Avec Rails - à la place d’Active Record




     Pas de migration du schéma de la BDD
     Tolérance du modèle




                                                                 logo


                     Nicolas Ledez   Breizhcamp - Nosql - Ruby
Introduction   Conclusion
               Ruby On Rails    Questions
                      NoSQL     Sources
                  Conclusion    Licence


Conclusion




  Conclusion




                                                            logo


               Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction   Conclusion
                Ruby On Rails    Questions
                       NoSQL     Sources
                   Conclusion    Licence


Questions




  Questions ?




                                                             logo


                Nicolas Ledez    Breizhcamp - Nosql - Ruby
Introduction   Conclusion
                      Ruby On Rails    Questions
                             NoSQL     Sources
                         Conclusion    Licence


Sources



     http ://blog.nahurst.com/visual-guide-to-nosql-systems
     http ://nosql-database.org/
     http ://www.camilleroux.com/2010/08/16/pourquoi-ruby-on-
     rails-est-genial-1-sur-2/
     http ://railscasts.com/episodes/256-i18n-backends
     http ://www.slideshare.net/karmi/redis-the-ak47-of-
     postrelational-databases



                                                                   logo


                       Nicolas Ledez   Breizhcamp - Nosql - Ruby
Introduction   Conclusion
          Ruby On Rails    Questions
                 NoSQL     Sources
             Conclusion    Licence


Licence




              CC BY-NC-SA




                                                       logo


          Nicolas Ledez    Breizhcamp - Nosql - Ruby

Mais conteúdo relacionado

Semelhante a Breizhcamp NoSQL

Úvod do Ruby on Rails
Úvod do Ruby on RailsÚvod do Ruby on Rails
Úvod do Ruby on RailsKarel Minarik
 
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Coursepeter_marklund
 
070929 Ruby勉強会#5 Rails開発ツールガイド
070929 Ruby勉強会#5 Rails開発ツールガイド070929 Ruby勉強会#5 Rails開発ツールガイド
070929 Ruby勉強会#5 Rails開発ツールガイドTomoki Maeda
 
Les Tests avec Ruby on Rails et RSpec (in French)
Les Tests avec Ruby on Rails et RSpec (in French)Les Tests avec Ruby on Rails et RSpec (in French)
Les Tests avec Ruby on Rails et RSpec (in French)Jean-Michel Garnier
 
Ruby on Rails workshop for beginner
Ruby on Rails workshop for beginnerRuby on Rails workshop for beginner
Ruby on Rails workshop for beginnerUmair Amjad
 
Introduction to Ruby on Rails
Introduction to Ruby on RailsIntroduction to Ruby on Rails
Introduction to Ruby on RailsManoj Kumar
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivationjistr
 
RoR (Ruby on Rails)
RoR (Ruby on Rails)RoR (Ruby on Rails)
RoR (Ruby on Rails)scandiweb
 
J Ruby Whirlwind Tour
J Ruby Whirlwind TourJ Ruby Whirlwind Tour
J Ruby Whirlwind Touroscon2007
 
Jaoo Michael Neale 09
Jaoo Michael Neale 09Jaoo Michael Neale 09
Jaoo Michael Neale 09Michael Neale
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Railsousli07
 
Ruby on Rails introduction
Ruby on Rails introduction Ruby on Rails introduction
Ruby on Rails introduction Tran Hung
 
Functional Scala 2022 - scalajs Alexis.pdf
Functional Scala 2022 - scalajs Alexis.pdfFunctional Scala 2022 - scalajs Alexis.pdf
Functional Scala 2022 - scalajs Alexis.pdfssusercd195b
 

Semelhante a Breizhcamp NoSQL (20)

Bhavesh ro r
Bhavesh ro rBhavesh ro r
Bhavesh ro r
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Úvod do Ruby on Rails
Úvod do Ruby on RailsÚvod do Ruby on Rails
Úvod do Ruby on Rails
 
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
 
070929 Ruby勉強会#5 Rails開発ツールガイド
070929 Ruby勉強会#5 Rails開発ツールガイド070929 Ruby勉強会#5 Rails開発ツールガイド
070929 Ruby勉強会#5 Rails開発ツールガイド
 
Les Tests avec Ruby on Rails et RSpec (in French)
Les Tests avec Ruby on Rails et RSpec (in French)Les Tests avec Ruby on Rails et RSpec (in French)
Les Tests avec Ruby on Rails et RSpec (in French)
 
Ruby on Rails workshop for beginner
Ruby on Rails workshop for beginnerRuby on Rails workshop for beginner
Ruby on Rails workshop for beginner
 
Introduction to Ruby on Rails
Introduction to Ruby on RailsIntroduction to Ruby on Rails
Introduction to Ruby on Rails
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivation
 
RoR (Ruby on Rails)
RoR (Ruby on Rails)RoR (Ruby on Rails)
RoR (Ruby on Rails)
 
Dev streams2
Dev streams2Dev streams2
Dev streams2
 
J Ruby Whirlwind Tour
J Ruby Whirlwind TourJ Ruby Whirlwind Tour
J Ruby Whirlwind Tour
 
Jaoo Michael Neale 09
Jaoo Michael Neale 09Jaoo Michael Neale 09
Jaoo Michael Neale 09
 
Rails01
Rails01Rails01
Rails01
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Ruby on Rails introduction
Ruby on Rails introduction Ruby on Rails introduction
Ruby on Rails introduction
 
Web application intro
Web application introWeb application intro
Web application intro
 
Functional Scala 2022 - scalajs Alexis.pdf
Functional Scala 2022 - scalajs Alexis.pdfFunctional Scala 2022 - scalajs Alexis.pdf
Functional Scala 2022 - scalajs Alexis.pdf
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 

Último

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 

Último (20)

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 

Breizhcamp NoSQL

  • 1. Introduction Ruby On Rails NoSQL Conclusion Breizhcamp - Nosql - Ruby Nicolas Ledez from.slideshare@ledez.net 17 Juin 2011 logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 2. Introduction Ruby On Rails NoSQL Conclusion Nicolas Ledez <me> logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 3. Introduction Ruby On Rails NoSQL Conclusion Nicolas Ledez Depuis bientôt 5 ans logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 4. Introduction Ruby On Rails NoSQL Conclusion Nicolas Ledez Chef de projet technique logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 5. Introduction Ruby On Rails NoSQL Conclusion Nicolas Ledez http ://www.breizhcamp.org/ Cloud et NoSQL logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 6. Introduction Ruby On Rails NoSQL Conclusion Nicolas Ledez http ://www.rennesonrails.com/ Coding Dojo & Confs logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 7. Introduction Ruby On Rails NoSQL Conclusion Nicolas Ledez http ://www.granit.org/ Forum Graphotech Cloud logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 8. Introduction Ruby On Rails NoSQL Conclusion Nicolas Ledez </me> logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 9. Introduction Ruby On Rails NoSQL Conclusion Plan 1 Introduction 2 Ruby On Rails 3 NoSQL 4 Conclusion logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 10. Introduction Sondage Ruby On Rails NoSQL NoSQL Ruby & Rails Conclusion Qui connaît ? NoSQL SQL Clé/valeur Document Ruby On Rails Ruby Rails logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 11. Introduction Sondage Ruby On Rails NoSQL NoSQL Ruby & Rails Conclusion NoSQL Not Only SQL logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 13. Ruby & Rails Ruby Plusieurs VM Ruby (MRI, JRuby, MacRuby, Rubinus) 24,898 gems (en juin 2011) +185 000 projets Ruby sur Github Rails DRY Convention over Configuration MVC, migrations, Active Record, etc
  • 14. Ruby On Rails - i18n $ cat config/locales/fr.yml fr: listing_tickets: "Liste des tickets" name: "Nom" unknown: "Inconnu" back: "Retour" are_you_sure: "Etes-vous sur ?" editing_ticket: "Edition du ticket" $ grep listing_tickets app/views/tickets/index.html. <h1><%= t(’listing_tickets’) %></h1>
  • 15. Ruby On Rails - generators $ rails generate model ticket name:string description:text $ cat db/migrate/20110602142024_create_tickets.rb class CreateTickets < ActiveRecord::Migration def change create_table :tickets do |t| t.string :name t.text :description t.timestamps end end end
  • 16. Ruby On Rails - Active Record $ cat app/models/ticket.rb class Ticket < ActiveRecord::Base validates_presence_of :name validates_presence_of :status end $ rake db:migrate -- create_table("tickets", {:force=>true}) -> 0.0696s DB -> Model -> Controller -> Vue
  • 17. Introduction Ruby On Rails Redis NoSQL MongoDB Conclusion Redis Manipulation de clés / valeurs Commandes simples Valeurs : string, list, set, sorted set, hashes Expiration des clés possible Utilisation : cache, session, compteurs, queue logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 18. Introduction Ruby On Rails Redis NoSQL MongoDB Conclusion Redis exemples Clé/valeur List Sets SET key "value" LPUSH key 1 SADD key 1 GET key LRANGE key 0 -1 SMEMBERS key DEL key RPOP key SISMEMBER key INCR key LLEN key 2 EXPIRE key 5 LTRIM key 0 1 SRANDMEMBER EXPIREAT key key <timestp> SREM key 3 TTL key logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 19. Introduction Ruby On Rails Redis NoSQL MongoDB Conclusion Redis avec Ruby On Rails - backend Ajout de "gem ’redis’" dans le Gemfile $ cat config/initializers/i18n_backend.rb I18n.backend = I18n::Backend::KeyValue.new( Redis.new) $ cat config/initializers/i18n_backend.rb TRANSLATION_STORE = Redis.new I18n.backend = I18n::Backend::Chain.new( I18n::Backend::KeyValue.new(TRANSLATION_STORE), I18n.backend) logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 20. Introduction Ruby On Rails Redis NoSQL MongoDB Conclusion Redis avec Ruby On Rails - frontend $ cat app/controllers/translations_controller.rb class TranslationsController < ApplicationController def index @translations = TRANSLATION_STORE end def create I18n.backend.store_translations(params[:locale], {params[:key] => params[:value]}, :escape => false) redirect_to translations_url, :notice => "Added translations" end end logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 21. Redis avec Ruby On Rails - hack ROR 3.1 rc1 1/3 $ cat config/environment.rb # Load the rails application require File.expand_path(’../application’, __FILE__) module I18n module Backend class KeyValue module Implementation def store_translations(locale, data, options = {}) #@store[key] = ActiveSupport::JSON.encode(value) unless @store[key] = ActiveSupport::JSON.encode([value]) unless end end end end end end
  • 22. Redis avec Ruby On Rails - hack ROR 3.1 rc1 2/3 module I18n module Backend class KeyValue module Implementation protected def lookup(locale, key, scope = [], options = {}) #value = ActiveSupport::JSON.decode(value) if value value = ActiveSupport::JSON.decode(value)[0] if value end end end end end # Initialize the rails application Tickets::Application.initialize!
  • 23. Redis avec Ruby On Rails - hack ROR 3.1 rc1 3/3
  • 24. Introduction Ruby On Rails Redis NoSQL MongoDB Conclusion MongoDB Base orientée documents (BSON) Un système de requêtes évolué Scalable Hautes performances Sans schéma logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 25. Introduction Ruby On Rails Redis NoSQL MongoDB Conclusion MongoDB exemples 1/2 show dbs use db_name show collections db.foo.find(); db.foo.save({ name : "sara"}); person = db.people.findOne( { name : "sara" } ); person.city = "New York"; db.people.save( person ); logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 26. Introduction Ruby On Rails Redis NoSQL MongoDB Conclusion MongoDB exemples 2/2 db.foo.drop() db.foo.remove() db.foo.remove( { name : "sara" } ) db.foo.getIndexKeys() db.foo.ensureIndex({ _field_ : 1 }) logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 27. Introduction Ruby On Rails Redis NoSQL MongoDB Conclusion Avec Rails - config config/initializers/mongo.rb MongoMapper.connection = Mongo::Connection.new(’localhost’, 270 MongoMapper.database = "#myapp-#{Rails.env}" if defined?(PhusionPassenger) PhusionPassenger.on_event(:starting_worker_process) do |fork MongoMapper.connection.connect if forked end end logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 28. Introduction Ruby On Rails Redis NoSQL MongoDB Conclusion Avec Rails - model app/models/note.rb class Note include MongoMapper::Document key :title, String, :required => true key :body, String end logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 29. Introduction Ruby On Rails Redis NoSQL MongoDB Conclusion Avec Rails - à la place d’Active Record Pas de migration du schéma de la BDD Tolérance du modèle logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 30. Introduction Conclusion Ruby On Rails Questions NoSQL Sources Conclusion Licence Conclusion Conclusion logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 31. Introduction Conclusion Ruby On Rails Questions NoSQL Sources Conclusion Licence Questions Questions ? logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 32. Introduction Conclusion Ruby On Rails Questions NoSQL Sources Conclusion Licence Sources http ://blog.nahurst.com/visual-guide-to-nosql-systems http ://nosql-database.org/ http ://www.camilleroux.com/2010/08/16/pourquoi-ruby-on- rails-est-genial-1-sur-2/ http ://railscasts.com/episodes/256-i18n-backends http ://www.slideshare.net/karmi/redis-the-ak47-of- postrelational-databases logo Nicolas Ledez Breizhcamp - Nosql - Ruby
  • 33. Introduction Conclusion Ruby On Rails Questions NoSQL Sources Conclusion Licence Licence CC BY-NC-SA logo Nicolas Ledez Breizhcamp - Nosql - Ruby