Soumettre la recherche
Mettre en ligne
Versatile Storage Options With Tokyo Cabinet
•
6 j'aime
•
1,321 vues
Flinn Mueller
Suivre
Slides from my lightning talk at NoSQL Live Boston.
Lire moins
Lire la suite
Technologie
Business
Signaler
Partager
Signaler
Partager
1 sur 19
Recommandé
MongoDB Thinkorswim
MongoDB Thinkorswim
SethEdwards
MongoDB Aggregation MongoSF May 2011
MongoDB Aggregation MongoSF May 2011
Chris Westin
Object data manager Tutorials
Object data manager Tutorials
jivandip7
Cloud Firestore – From JSON Deserialization to Object Document Mapping (ODM)
Cloud Firestore – From JSON Deserialization to Object Document Mapping (ODM)
Minh Dao
Amazon DynamoDB by Aswin
Amazon DynamoDB by Aswin
Agate Studio
Introduction to Bizur
Introduction to Bizur
Akira Hayakawa
Webinar: What's new in Neo4j 2.0
Webinar: What's new in Neo4j 2.0
Neo4j
C# 4.0 dynamic
C# 4.0 dynamic
Wiryadi Adidharma
Recommandé
MongoDB Thinkorswim
MongoDB Thinkorswim
SethEdwards
MongoDB Aggregation MongoSF May 2011
MongoDB Aggregation MongoSF May 2011
Chris Westin
Object data manager Tutorials
Object data manager Tutorials
jivandip7
Cloud Firestore – From JSON Deserialization to Object Document Mapping (ODM)
Cloud Firestore – From JSON Deserialization to Object Document Mapping (ODM)
Minh Dao
Amazon DynamoDB by Aswin
Amazon DynamoDB by Aswin
Agate Studio
Introduction to Bizur
Introduction to Bizur
Akira Hayakawa
Webinar: What's new in Neo4j 2.0
Webinar: What's new in Neo4j 2.0
Neo4j
C# 4.0 dynamic
C# 4.0 dynamic
Wiryadi Adidharma
T3dallas typoscript
T3dallas typoscript
zdavis
Spring Camp 2016 - List query performance improvement using Couchbase
Spring Camp 2016 - List query performance improvement using Couchbase
Intae Kim
2CPP15 - Templates
2CPP15 - Templates
Michael Heron
TiDB Introduction - San Francisco MySQL Meetup
TiDB Introduction - San Francisco MySQL Meetup
Morgan Tocker
TiDB Introduction - Boston MySQL Meetup Group
TiDB Introduction - Boston MySQL Meetup Group
Morgan Tocker
Python presentation
Python presentation
Julia437584
Scala Back to Basics: Type Classes
Scala Back to Basics: Type Classes
Tomer Gabel
Datomic – A Modern Database - StampedeCon 2014
Datomic – A Modern Database - StampedeCon 2014
StampedeCon
MongoDB at ZPUGDC
MongoDB at ZPUGDC
Mike Dirolf
In memory databases presentation
In memory databases presentation
Michael Keane
Master tuning
Master tuning
Thomas Kejser
JavaScript - Chapter 12 - Document Object Model
JavaScript - Chapter 12 - Document Object Model
WebStackAcademy
From Ruby to Scala
From Ruby to Scala
tod esking
Modern C++
Modern C++
Michael Clark
Benefits of using MongoDB: Reduce Complexity & Adapt to Changes
Benefits of using MongoDB: Reduce Complexity & Adapt to Changes
Alex Nguyen
Denis Lebedev, Swift
Denis Lebedev, Swift
Yandex
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
Daniel Cousineau
MongoDB .local Toronto 2019: MongoDB Atlas Search Deep Dive
MongoDB .local Toronto 2019: MongoDB Atlas Search Deep Dive
MongoDB
MongoDB at RubyEnRails 2009
MongoDB at RubyEnRails 2009
Mike Dirolf
How to use the new Domino Query Language
How to use the new Domino Query Language
Tim Davis
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Fwdays
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
2toLead Limited
Contenu connexe
Similaire à Versatile Storage Options With Tokyo Cabinet
T3dallas typoscript
T3dallas typoscript
zdavis
Spring Camp 2016 - List query performance improvement using Couchbase
Spring Camp 2016 - List query performance improvement using Couchbase
Intae Kim
2CPP15 - Templates
2CPP15 - Templates
Michael Heron
TiDB Introduction - San Francisco MySQL Meetup
TiDB Introduction - San Francisco MySQL Meetup
Morgan Tocker
TiDB Introduction - Boston MySQL Meetup Group
TiDB Introduction - Boston MySQL Meetup Group
Morgan Tocker
Python presentation
Python presentation
Julia437584
Scala Back to Basics: Type Classes
Scala Back to Basics: Type Classes
Tomer Gabel
Datomic – A Modern Database - StampedeCon 2014
Datomic – A Modern Database - StampedeCon 2014
StampedeCon
MongoDB at ZPUGDC
MongoDB at ZPUGDC
Mike Dirolf
In memory databases presentation
In memory databases presentation
Michael Keane
Master tuning
Master tuning
Thomas Kejser
JavaScript - Chapter 12 - Document Object Model
JavaScript - Chapter 12 - Document Object Model
WebStackAcademy
From Ruby to Scala
From Ruby to Scala
tod esking
Modern C++
Modern C++
Michael Clark
Benefits of using MongoDB: Reduce Complexity & Adapt to Changes
Benefits of using MongoDB: Reduce Complexity & Adapt to Changes
Alex Nguyen
Denis Lebedev, Swift
Denis Lebedev, Swift
Yandex
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
Daniel Cousineau
MongoDB .local Toronto 2019: MongoDB Atlas Search Deep Dive
MongoDB .local Toronto 2019: MongoDB Atlas Search Deep Dive
MongoDB
MongoDB at RubyEnRails 2009
MongoDB at RubyEnRails 2009
Mike Dirolf
How to use the new Domino Query Language
How to use the new Domino Query Language
Tim Davis
Similaire à Versatile Storage Options With Tokyo Cabinet
(20)
T3dallas typoscript
T3dallas typoscript
Spring Camp 2016 - List query performance improvement using Couchbase
Spring Camp 2016 - List query performance improvement using Couchbase
2CPP15 - Templates
2CPP15 - Templates
TiDB Introduction - San Francisco MySQL Meetup
TiDB Introduction - San Francisco MySQL Meetup
TiDB Introduction - Boston MySQL Meetup Group
TiDB Introduction - Boston MySQL Meetup Group
Python presentation
Python presentation
Scala Back to Basics: Type Classes
Scala Back to Basics: Type Classes
Datomic – A Modern Database - StampedeCon 2014
Datomic – A Modern Database - StampedeCon 2014
MongoDB at ZPUGDC
MongoDB at ZPUGDC
In memory databases presentation
In memory databases presentation
Master tuning
Master tuning
JavaScript - Chapter 12 - Document Object Model
JavaScript - Chapter 12 - Document Object Model
From Ruby to Scala
From Ruby to Scala
Modern C++
Modern C++
Benefits of using MongoDB: Reduce Complexity & Adapt to Changes
Benefits of using MongoDB: Reduce Complexity & Adapt to Changes
Denis Lebedev, Swift
Denis Lebedev, Swift
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
MongoDB .local Toronto 2019: MongoDB Atlas Search Deep Dive
MongoDB .local Toronto 2019: MongoDB Atlas Search Deep Dive
MongoDB at RubyEnRails 2009
MongoDB at RubyEnRails 2009
How to use the new Domino Query Language
How to use the new Domino Query Language
Dernier
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Fwdays
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
2toLead Limited
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
LoriGlavin3
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
Scott Keck-Warren
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
Alan Dix
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
Florian Wilhelm
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
Lars Bell
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
hariprasad279825
How to write a Business Continuity Plan
How to write a Business Continuity Plan
Databarracks
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
null - The Open Security Community
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
Pixlogix Infotech
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
UiPathCommunity
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
Alfredo García Lavilla
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Addepto
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Enterprise Knowledge
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
Manik S Magar
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Hervé Boutemy
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
charlottematthew16
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Mark Billinghurst
Dernier
(20)
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
How to write a Business Continuity Plan
How to write a Business Continuity Plan
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Versatile Storage Options With Tokyo Cabinet
1.
Versatile Storage Options with
Tokyo Cabinet NoSQL Live March 11, 2010 Flinn Mueller
2.
Tokyo Cabinet • Mikio
Hirabayashi • Mixi.jp • LGPL • C99/Posix • Successor to QDBM • mmap
3.
Hash DB • Key/Value •
Strings • Extensions (Lua) • Map/Reduce • Forward Matching Keys
4.
B+ Tree Store •
Key/Value • Duplicate Keys • Forward Matching Keys • (Perfect Tag Store)
5.
Fixed Length DB •
Key/Value • Keys As Natural Number • Value Length Limited • Faster than Hash or B+ Tree • Range Query
6.
Table Store • Tuple/Document
Store • Query (condition, order, limit) • Full Text Search • Union, Intersect, Diff • Parallel Query
7.
How I Use
Tokyo • Like Memcache++ • Like a Queue • Like a Counter • Like a Tag Cloud
8.
{}
9.
Like Memcache++ require 'tokyo_tyrant' t
= TokyoTyrant::DB.new t['example.com/lorem'] = "Lorem..." t['example.com/lorem'] # => "Lorem..." t['example.com/lorem/ipsum'] = "Ipsum..." t.fwmkeys('example.com/') # => ['example.com/lorem/ipsum', 'example.com/lorem']
10.
Q
11.
Like a Queue require
'tokyo_tyrant' tdb = TokyoTyrant::Table.new tdb[tdb.genuid] = { 'url' => "http://example.com", 'queue' => "1m", 'created_at' => Time.now.to_i, 'origin' => Socket.hostname }
12.
Like a Queue require
'tokyo_tyrant' tdb = TokyoTyrant::Table.new tasks = tdb.find{ |q| q.condition :queue, :streq, '1m' q.order_by :created_at }.each{ |task| run_process(task) }
13.
i++
14.
Like a Counter require
'tokyo_tyrant' COUNTER_DB = TokyoTyrant::DB.new ... COUNTER_DB.add_int(id) # => 82169
15.
zomg pictures
lolcatz funny
16.
Like a Tag
Cloud require 'tokyo_tyrant' TAG_DB = TokyoTyrant::BDB.new ... tags = ['foo', 'bar'] tags.collect!{ |tag| "tag:#{tag}:articles" } hash_tags = TAG_DB.getlist(tags) article_ids = hash_tags.values.collect.flatten article_ids = article_ids.uniq.sort.reverse[0..4] articles = TAG_DB.mget(article_ids)
17.
Related Content articles =
TAG_DB.mget(article_ids) unpack = proc{ |k,v| v = MessagePack.unpack(v); v['__id'] = k; v } articles = articles.collect(&unpack).compact articles = articles.sort_by{ |v| v['__id'] } articles.reverse! content = Mustache.render(@@template, :articles => articles) response = [200, {"Content-Type" => "text/html"}, [content]]
18.
Versatile Storage Options •
Like Memcache++ • Like a Queue • Like a Counter • Like a Tag Cloud
19.
More
http://1978th.net/tokyocabinet http://1978th.net/tokyotyrant/ http://groups.google.com/group/tokyocabinet-users/ http://tokyocabinetwiki.pbworks.com/ http://github.com/actsasflinn/ruby-tokyotyrant http://github.com/jmettraux/rufus-tokyo/
Notes de l'éditeur