The document is a presentation about NoSQL and Ruby on Rails. It introduces Ruby on Rails and some common NoSQL databases like Redis and MongoDB. It provides examples of using each with Ruby on Rails, including configuration, models, and querying. The presentation concludes with asking for questions.
1 of 33
Download to read offline
More Related Content
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 Con?guration
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 cls / valeurs
Commandes simples
Valeurs : string, list, set, sorted set, hashes
Expiration des cls 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 Gem?le
$ 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!
24. Introduction
Ruby On Rails Redis
NoSQL MongoDB
Conclusion
MongoDB
Base oriente documents (BSON)
Un systme de requtes volu
Scalable
Hautes performances
Sans schma
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 - con?g
con?g/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 dActive Record
Pas de migration du schma de la BDD
Tolrance du modle
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