+ All Categories
Home > Technology > Breizhcamp NoSQL

Breizhcamp NoSQL

Date post: 15-May-2015
Category:
Upload: nicolas-ledez
View: 1,645 times
Download: 0 times
Share this document with a friend
Description:
Mes slides utilisés lors du Breizhcamp pour la présentation NoSQL. Licence CC-BY-NC-SA
Popular Tags:
33
logo Introduction Ruby On Rails NoSQL Conclusion Breizhcamp - Nosql - Ruby Nicolas Ledez [email protected] 17 Juin 2011 Nicolas Ledez Breizhcamp - Nosql - Ruby
Transcript
Page 1: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

Breizhcamp - Nosql - Ruby

Nicolas [email protected]

17 Juin 2011

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 2: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

Nicolas Ledez

<me>

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 3: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

Nicolas Ledez

Depuis bientôt 5 ans

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 4: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

Nicolas Ledez

Chef de projet technique

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 5: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

Nicolas Ledez

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

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 6: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

Nicolas Ledez

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

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 7: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

Nicolas Ledez

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

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 8: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

Nicolas Ledez

</me>

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 9: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

Plan

1 Introduction

2 Ruby On Rails

3 NoSQL

4 Conclusion

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 10: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

SondageNoSQLRuby & Rails

Qui connaît ?

NoSQLSQLClé/valeurDocument

Ruby On RailsRubyRails

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 11: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

SondageNoSQLRuby & Rails

NoSQL

Not Only SQL

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 12: Breizhcamp NoSQL

Choix du moteur

Page 13: Breizhcamp NoSQL

Ruby & Rails

RubyPlusieurs VM Ruby (MRI, JRuby, MacRuby, Rubinus)24,898 gems (en juin 2011)+185 000 projets Ruby sur Github

RailsDRYConvention over ConfigurationMVC, migrations, Active Record, etc

Page 14: Breizhcamp NoSQL

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.erb<h1><%= t(’listing_tickets’) %></h1>

Page 15: Breizhcamp NoSQL

Ruby On Rails - generators

$ rails generate model ticket name:stringdescription:text

$ cat db/migrate/20110602142024_create_tickets.rb

class CreateTickets < ActiveRecord::Migrationdef changecreate_table :tickets do |t|t.string :namet.text :description

t.timestampsend

endend

Page 16: Breizhcamp NoSQL

Ruby On Rails - Active Record

$ cat app/models/ticket.rb

class Ticket < ActiveRecord::Basevalidates_presence_of :namevalidates_presence_of :status

end

$ rake db:migrate-- create_table("tickets", {:force=>true})

-> 0.0696s

DB -> Model -> Controller -> Vue

Page 17: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

RedisMongoDB

Redis

Manipulation de clés / valeursCommandes simplesValeurs : string, list, set, sorted set, hashesExpiration des clés possibleUtilisation : cache, session, compteurs, queue

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 18: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

RedisMongoDB

Redis exemples

Clé/valeurSET key "value"GET keyDEL keyINCR keyEXPIRE key 5EXPIREAT key<timestp>TTL key

ListLPUSH key 1LRANGE key 0 -1RPOP keyLLEN keyLTRIM key 0 1

SetsSADD key 1SMEMBERS keySISMEMBER key2SRANDMEMBERkeySREM key 3

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 19: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

RedisMongoDB

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.newI18n.backend = I18n::Backend::Chain.new(I18n::Backend::KeyValue.new(TRANSLATION_STORE),I18n.backend)

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 20: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

RedisMongoDB

Redis avec Ruby On Rails - frontend

$ cat app/controllers/translations_controller.rb

class TranslationsController < ApplicationControllerdef index@translations = TRANSLATION_STORE

end

def createI18n.backend.store_translations(params[:locale],{params[:key] => params[:value]}, :escape => false)

redirect_to translations_url,:notice => "Added translations"

endend

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 21: Breizhcamp NoSQL

Redis avec Ruby On Rails - hack ROR 3.1 rc1 1/3

$ cat config/environment.rb

# Load the rails applicationrequire File.expand_path(’../application’, __FILE__)

module I18nmodule Backendclass KeyValuemodule Implementationdef store_translations(locale, data, options = {})

#@store[key] = ActiveSupport::JSON.encode(value) unless value.is_a?(Symbol)@store[key] = ActiveSupport::JSON.encode([value]) unless value.is_a?(Symbol)

endend

endend

endend

Page 22: Breizhcamp NoSQL

Redis avec Ruby On Rails - hack ROR 3.1 rc1 2/3

module I18nmodule Backendclass KeyValuemodule Implementationprotecteddef lookup(locale, key, scope = [], options = {})#value = ActiveSupport::JSON.decode(value) if valuevalue = ActiveSupport::JSON.decode(value)[0] if value

endend

endend

end

# Initialize the rails applicationTickets::Application.initialize!

Page 23: Breizhcamp NoSQL

Redis avec Ruby On Rails - hack ROR 3.1 rc1 3/3

Page 24: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

RedisMongoDB

MongoDB

Base orientée documents (BSON)Un système de requêtes évoluéScalableHautes performancesSans schéma

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 25: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

RedisMongoDB

MongoDB exemples 1/2

show dbsuse db_nameshow collections

db.foo.find();

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

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

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 26: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

RedisMongoDB

MongoDB exemples 2/2

db.foo.drop()

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

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

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 27: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

RedisMongoDB

Avec Rails - config

config/initializers/mongo.rb

MongoMapper.connection = Mongo::Connection.new(’localhost’, 27017)MongoMapper.database = "#myapp-#{Rails.env}"

if defined?(PhusionPassenger)PhusionPassenger.on_event(:starting_worker_process) do |forked|

MongoMapper.connection.connect if forkedend

end

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 28: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

RedisMongoDB

Avec Rails - model

app/models/note.rb

class Noteinclude MongoMapper::Document

key :title, String, :required => truekey :body, String

end

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 29: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

RedisMongoDB

Avec Rails - à la place d’Active Record

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

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 30: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

ConclusionQuestionsSourcesLicence

Conclusion

Conclusion

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 31: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

ConclusionQuestionsSourcesLicence

Questions

Questions ?

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 32: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

ConclusionQuestionsSourcesLicence

Sources

http ://blog.nahurst.com/visual-guide-to-nosql-systemshttp ://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-backendshttp ://www.slideshare.net/karmi/redis-the-ak47-of-postrelational-databases

Nicolas Ledez Breizhcamp - Nosql - Ruby

Page 33: Breizhcamp NoSQL

logo

IntroductionRuby On Rails

NoSQLConclusion

ConclusionQuestionsSourcesLicence

Licence

CC BY-NC-SA

Nicolas Ledez Breizhcamp - Nosql - Ruby


Recommended