SlideShare a Scribd company logo
The NOSQL
ST
ORE
Ev
er
yone IGNORED
By Zohaib Sibte H
as
san @ DOorD
a
About mE
Zohaib Sibte Hassan
@zohaibility
Dad, engineer, tinkerer, love open
source & working for DoorDash!
At DoorDash we use Postgres!
DoorD
a
Hi
st
ory
2009 - Friend Feed blog
Hi
st
ory
2011 - I discovered HSTORE and blogged about it
Hi
st
ory
2012 - I revisited imagining FriendFeed on Postgres & HSTORE
Hi
st
ory
2015 - Talk with same title in Dublin
Our Roadmap Today
•A brief look at FriendFeed use
-
case


•Warming up with HSTORE


•Taking it to next level:


•JSONB


•Complex yet simple queries


•Partitioning our documents
Po
st
gr
es
IS ALWAYs
ev
olvING
•Robust schemaless
-
types:


•Array


•HSTORE


•XML


•JSON & JSONB


•Improved storage engine


•Improved Foreign Data Wrappers


•Partitioning support
B
ri
ef
Hi
st
ory
FOR
HS
TORE
HS
TORE
May 2003 - First version of store
HS
TORE
•May 16, 2003 - f
i
rst (unpublished) version of
hstore for PostgreSQL 7.3


•Dec, 05, 2006 - hstore is a part of PostgreSQL 8.2


•May 23, 2007 - GIN index for hstore, PostgreSQL 8.3


•Sep, 20, 2010 - Andrew Gierth improved hstore,
PostgreSQL 9.0


•May 24, 2013 - Nested hstore with array support,
key
-
>
value model
-
>
document
-
based model (Stay
tuned for more on this)
HS
TORE
•Benef
i
ts:


•Provides a
f
l
exible model for storing a semi
-
structured data in Postgres.


•Binary represented so extremely fast! Selecting
f
i
elds or properties.


•GIN and GiST indexes can be used!


•Drawbacks:


•Too
f
l
at! Doesn't support tree
-
like structures
(e.g. JSON introduced in 2006, 3 years after store)
Enou
gh
TH
EORY
L
et
's build som
et
hing s
er
ious
F
ri
en
dFEED
U
SI
NG SQL To BUILD NoSQL
• https:
/
/
backchannel.org/blog/friendfeed
-
schemaless
-
mysql
WHY F
RI
EN
DFEED?
•Good example of understanding available
technology and problem at hand.


•Did not cave in to buzzword, and started
using something less known/reliable.


•Large scale problem with good example on how
modern SQL tooling solves the problem.


•Using tool that you are comfortable with.


•Read blog post!
WHY F
RI
EN
DFEED?
F
RI
EN
DFEED
{


"id": "71f0c4d2291844cca2df6f486e96e37c",


"user_id": "f48b0440ca0c4f66991c4d5f6a078eaf",


"feed_id": "f48b0440ca0c4f66991c4d5f6a078eaf",


"title": "We just launched a new backend system for FriendFeed!",


"link": "http:
/
/
friendfeed.com/e/71f0c4d2-2918-44cc
-
a2df-6f486e96e37c",


"published": 1235697046,


"updated": 1235697046,


}
F
RI
EN
DFEED
CREATE TABLE entities (


added_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,


id BINARY(16) NOT NULL,


updated TIMESTAMP NOT NULL,


body MEDIUMBLOB,


UNIQUE KEY (id),


KEY (updated)


) ENGINE=InnoDB;
HOW
CA
N WE INDEX?
{


"id": "71f0c4d2291844cca2df6f486e96e37c",


"user_id": "f48b0440ca0c4f66991c4d5f6a078eaf",


"feed_id": "f48b0440ca0c4f66991c4d5f6a078eaf",


"title": "We just launched a new backend system for FriendFeed!",


"link": "http://friendfeed.com/e/71f0c4d2-2918-44cc-a2df-6f486e96e37c",


"published": 1235697046,


"updated": 1235697046,


}
F
RI
EN
DFEED INDEXING
CREATE TABLE index_user_id (


user_id BINARY(16) NOT NULL,


entity_id BINARY(16) NOT NULL UNIQUE,


PRIMARY KEY (user_id, entity_id)


) ENGINE=InnoDB;
•Create tables for each indexed f
i
eld.


•Have background workers to populate newly created index.


•Complete language framework to ensure documents are
indexed as they are inserted.
CODING F
RA
M
EW
O
R
HS
TORE
The K
ey
-Value Store Ev
er
yone
Ignored
HS
TORE
HS
TORE
CREATE TABLE feed (


id varchar(64) NOT NULL PRIMARY KEY,


doc hstore


);
HS
TORE
INSERT INTO feed VALUES (


'ff923c93-7769-4ef6-b026-50c5a87a79c5',


'id=>zohaibility, post=>hello'::hstore


);
HS
TORE
SELECT doc
-
>
'post' as post, doc
-
>
'undef
i
ned_f
i
eld' as undef
i
ned


FROM feed


WHERE doc
-
>
'id' = 'zohaibility';
post | undef
i
ned


-------+-----------


hello |


(1 row)
HS
TORE
EXPLAIN SELECT *


FROM feed


WHERE doc
-
>
'id' = 'zohaibility';
QUERY PLAN


-------------------------------------------------------


Seq Scan on feed (cost=0.00
.
.
1.03 rows=1 width=178)


Filter: ((doc
-
>
'id'
:
:
text) = 'zohaibility'
:
:
text)


(2 rows)
INDEXING
HS
TORE
CREATE INDEX feed_user_id_index


ON feed ((doc->'id'));
HS
TORE ❤
GI
S
CREATE INDEX feed_gist_idx


ON feed


USING gist (doc);
HS
TORE ❤
GI
S
SELECT doc->'post' as post, doc->'undefined_field' as should_be_null


FROM feed


WHERE doc @> ‘id=>zohaibility';
post | undef
i
ned


-------+-----------


hello |


(1 row)
R
EI
MA
GI
NING Fr
ei
ndFEED
CREATE TABLE entities (


id BIGINT PRIMARY KEY,


updated TIMESTAMP NOT NULL,


body HSTORE,


…


);
CREATE TABLE index_user_id (


user_id BINARY(16) NOT NULL,


entity_id BINARY(16) NOT NULL UNIQUE,


PRIMARY KEY (user_id, entity_id)


) ENGINE=InnoDB;
CREATE INDEX CONCURRENTLY entity_id_index


ON entities ((body->’entity_id’));
MORE Op
era
to
rs
!
https:
/
/
w
w
w
.postgresql.org/docs/current/hstore.html
JSONB
tO IN
FI
NI
TY
AND B
EY
OND
WHY JSON?
•Well understood, and goto standard for
almost everything on modern web.


•“Self describing”, hierarchical, and
parsing and serialization libraries for
every programming language


•Describes a loose shape of the object,
which might be necessary in some cases.
TW
E
ET
s
TW
E
ET
S TABLE
CREATE TABLE tweets (


id varchar(64) NOT NULL PRIMARY KEY,


content jsonb NOT NULL


);
B
AS
IC QU
ER
Y
SELECT "content"->'text' as txt, "content"->'favorite_count' as cnt


FROM tweets


WHERE “content"->'id_str' == ‘…’
And Y
ES
you
ca
n index
th
is!!!
PE
EK
IN INTO
ST
RU
CT
URE
SELECT *


FROM tweets


WHERE (content->>'favorite_count')::integer >= 1;
😭
EXPLAIN SELECT *


FROM tweets


WHERE (content->'favorite_count')::integer >= 1;
QUERY PLAN


------------------------------------------------------------------


Seq Scan on tweets (cost=0.00
.
.
2453.28 rows=6688 width=718)


Filter: (((content
-
>
>
'favorite_count'
:
:
text))
:
:
integer
>
=
1)


(2 rows)
B
AS
IC INDEXING
CREATE INDEX fav_count_index


ON tweets (((content->’favorite_count')::INTEGER));
B
AS
IC INDEXING
EXPLAIN SELECT *


FROM tweets


WHERE (content->'favorite_count')::integer >= 1;
QUERY PLAN


-----------------------------------------------------------------------------------


Bitmap Heap Scan on tweets (cost=128.12
.
.
2297.16 rows=6688 width=718)


Recheck Cond: (((content
-
>
'favorite_count'
:
:
text))
:
:
integer
>
=
1)


-
>
Bitmap Index Scan on fav_count_index (cost=0.00
.
.
126.45 rows=6688 width=0)


Index Cond: (((content
-
>
'favorite_count'
:
:
text))
:
:
integer
>
=
1)


(4 rows)
JSONB-JI
S
SELECT content#>>’{text}' as txt


FROM tweets


WHERE (content#>'{entities,hashtags}') @> '[{"text": "python"}]'::jsonb;
JSON OP
ERA
TO
R
JSONB Op
era
to
r
MAT
CH
ING TAGS
SELECT content#>>’{text}' as txt


FROM tweets


WHERE (content#>'{entities,hashtags}') @> '[{"text": "python"}]'::jsonb;
INDEXING
CREATE INDEX idx_gin_hashtags


ON tweets


USING GIN ((content#>'{entities,hashtags}') jsonb_ops);
Complex S
ea
r
c
CREATE INDEX idx_gin_rt_hashtags


ON tweets


USING GIN ((content#>'{retweeted_status,entities,hashtags}') jsonb_ops);
SELECT content#>'{text}' as txt


FROM tweets


WHERE (


(content#>'{entities,hashtags}') @> '[{"text": “python"}]'::jsonb


OR


(content#>'{retweeted_status,entities,hashtags}') @> '[{"text": “postgres"}]'::jsonb


);
JSONB +
ECO
SY
ST
E
TH
E POW
ER
OF AL
CH
EM
Y
JSONB + TSVE
CT
OR
CREATE INDEX idx_gin_tweet_text


ON tweets


USING GIN (to_tsvector('english', content->>'text') tsvector_ops);
SELECT content->>'text' as txt


FROM tweets


WHERE to_tsvector('english', content->>'text') @@ to_tsquery('english', 'python');
JSONB + PA
RT
ITIOn
CREATE TABLE part_tweets (


id varchar(64) NOT NULL,


content jsonb NOT NULL


) PARTITION BY hash (md5(content->>’user'->>'id'));


CREATE TABLE part_tweets_0 PARTITION OF part_tweets FOR
VALUES WITH (MODULUS 4, REMAINDER 0);


CREATE TABLE part_tweets_1 PARTITION OF part_tweets FOR
VALUES WITH (MODULUS 4, REMAINDER 1);


CREATE TABLE part_tweets_2 PARTITION OF part_tweets FOR
VALUES WITH (MODULUS 4, REMAINDER 2);


CREATE TABLE part_tweets_3 PARTITION OF part_tweets FOR
VALUES WITH (MODULUS 4, REMAINDER 3);
JSONB + PA
RT
ITIOn + INDEXING
CREATE INDEX pidx_gin_hashtags ON part_tweets USING GIN
((content#>'{entities,hashtags}') jsonb_ops);


CREATE INDEX pidx_gin_rt_hashtags ON part_tweets USING GIN
((content#>'{retweeted_status,entities,hashtags}') jsonb_ops);


CREATE INDEX pidx_gin_tweet_text ON tweets USING GIN
(to_tsvector('english', content->>'text') tsvector_ops);
INSERT INTO part_tweets SELECT * from tweets;
JSONB + PA
RT
ITIOn + INDEXING
EXPLAIN SELECT content#>'{text}' as txt


FROM part_tweets


WHERE (content#>'{entities,hashtags}') @> '[{"text": "postgres"}]'::jsonb;
QUERY PLAN


----------------------------------------------------------------------------------------------------------
-


Append (cost=24.26
.
.
695.46 rows=131 width=32)


-
>
Bitmap Heap Scan on part_tweets_0 (cost=24.26
.
.
150.18 rows=34 width=32)


Recheck Cond: ((content #> '{entities,hashtags}'
:
:
text[]) @> '[{"text": "postgres"}]'
:
:
jsonb)


-
>
Bitmap Index Scan on part_tweets_0_expr_idx (cost=0.00
.
.
24.25 rows=34 width=0)


Index Cond: ((content #> '{entities,hashtags}'
:
:
text[]) @> '[{"text": "postgres"}]'
:
:
jsonb)


-
>
Bitmap Heap Scan on part_tweets_1 (cost=80.25
.
.
199.02 rows=32 width=32)


Recheck Cond: ((content #> '{entities,hashtags}'
:
:
text[]) @> '[{"text": "postgres"}]'
:
:
jsonb)


-
>
Bitmap Index Scan on part_tweets_1_expr_idx (cost=0.00
.
.
80.24 rows=32 width=0)


Index Cond: ((content #> '{entities,hashtags}'
:
:
text[]) @> '[{"text": "postgres"}]'
:
:
jsonb)


-
>
Bitmap Heap Scan on part_tweets_2 (cost=28.25
.
.
147.15 rows=32 width=32)


Recheck Cond: ((content #> '{entities,hashtags}'
:
:
text[]) @> '[{"text": "postgres"}]'
:
:
jsonb)


-
>
Bitmap Index Scan on part_tweets_2_expr_idx (cost=0.00
.
.
28.24 rows=32 width=0)


Index Cond: ((content #> '{entities,hashtags}'
:
:
text[]) @> '[{"text": "postgres"}]'
:
:
jsonb)


-
>
Bitmap Heap Scan on part_tweets_3 (cost=76.26
.
.
198.46 rows=33 width=32)


Recheck Cond: ((content #> '{entities,hashtags}'
:
:
text[]) @> '[{"text": "postgres"}]'
:
:
jsonb)


-
>
Bitmap Index Scan on part_tweets_3_expr_idx (cost=0.00
.
.
76.25 rows=33 width=0)


Index Cond: ((content #> '{entities,hashtags}'
:
:
text[]) @> '[{"text": "postgres"}]'
:
:
jsonb)


(17 rows)
JSONB + PA
RT
ITIOn + INDEXING
EXPLAIN SELECT content#>'{text}' as txt FROM tweets WHERE (


(content#>'{entities,hashtags}') @> '[{"text": "python"}]'::jsonb


OR


(content#>'{retweeted_status,entities,hashtags}') @> '[{"text": "python"}]'::jsonb


);
LIMIT IS YOUR
IMA
GI
NATION
Don’t Und
er
E
st
imate
th
e pow
er
of
LIN
KS
& R
es
ourc
e
•https:
/
/
w
w
w
.linuxjournal.com/content/postgresql
-
nosql
-
database


•http:
/
/
w
w
w
.sai.msu.su/~megera/postgres/talks/hstore
-
dublin-2013.pdf


•https:
/
/
maxpert.tumblr.com/post/14062057061/the
-
key
-
value
-
store
-
everyone
-
ignored
-
postgresql


•https:
/
/
maxpert.tumblr.com/post/32461917960/migrating
-
friendfeed
-
to
-
postgresql


•https:
/
/
w
w
w
.postgresql.org/docs/current/datatype
-
json.html


•https:
/
/
w
w
w
.postgresql.org/docs/current/functions
-
json.html


•https:
/
/
w
w
w
.postgresql.org/docs/current/gin
-
builtin
-
opclasses.html


•https:
/
/
w
w
w
.postgresql.org/docs/current/ddl
-
partitioning.html


•https:
/
/
w
w
w
.postgresql.org/docs/current/textsearch
-
tables.html


•https:
/
/
pgdash.io/blog/partition
-
postgres-11.html


•https:
/
/
talks.bitexpert.de/dpc15-postgres
-
nosql/#/


•https:
/
/
w
w
w
.postgresql.org/docs/current/hstore.html
TH
ANK YOU!
Ad

More Related Content

What's hot (20)

Introduction to Solr
Introduction to SolrIntroduction to Solr
Introduction to Solr
Erik Hatcher
 
ElasticSearch: Найдется все... и быстро!
ElasticSearch: Найдется все... и быстро!ElasticSearch: Найдется все... и быстро!
ElasticSearch: Найдется все... и быстро!
Alexander Byndyu
 
Introduction to Apache Solr
Introduction to Apache SolrIntroduction to Apache Solr
Introduction to Apache Solr
Alexandre Rafalovitch
 
How Solr Search Works
How Solr Search WorksHow Solr Search Works
How Solr Search Works
Atlogys Technical Consulting
 
20130310 solr tuorial
20130310 solr tuorial20130310 solr tuorial
20130310 solr tuorial
Chris Huang
 
Introduction to solr
Introduction to solrIntroduction to solr
Introduction to solr
Sematext Group, Inc.
 
Enterprise Search Solution: Apache SOLR. What's available and why it's so cool
Enterprise Search Solution: Apache SOLR. What's available and why it's so coolEnterprise Search Solution: Apache SOLR. What's available and why it's so cool
Enterprise Search Solution: Apache SOLR. What's available and why it's so cool
Ecommerce Solution Provider SysIQ
 
Solr Masterclass Bangkok, June 2014
Solr Masterclass Bangkok, June 2014Solr Masterclass Bangkok, June 2014
Solr Masterclass Bangkok, June 2014
Alexandre Rafalovitch
 
Elasto Mania
Elasto ManiaElasto Mania
Elasto Mania
andrefsantos
 
Building a Scalable Inbox System with MongoDB and Java
Building a Scalable Inbox System with MongoDB and JavaBuilding a Scalable Inbox System with MongoDB and Java
Building a Scalable Inbox System with MongoDB and Java
antoinegirbal
 
Schemaless Solr and the Solr Schema REST API
Schemaless Solr and the Solr Schema REST APISchemaless Solr and the Solr Schema REST API
Schemaless Solr and the Solr Schema REST API
lucenerevolution
 
Mysql
MysqlMysql
Mysql
Chris Henry
 
Solr: 4 big features
Solr: 4 big featuresSolr: 4 big features
Solr: 4 big features
David Smiley
 
MongoDB Schema Design: Four Real-World Examples
MongoDB Schema Design: Four Real-World ExamplesMongoDB Schema Design: Four Real-World Examples
MongoDB Schema Design: Four Real-World Examples
Mike Friedman
 
よく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_nightよく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_night
Kenji Tanaka
 
Elastify you application: from SQL to NoSQL in less than one hour!
Elastify you application: from SQL to NoSQL in less than one hour!Elastify you application: from SQL to NoSQL in less than one hour!
Elastify you application: from SQL to NoSQL in less than one hour!
David Pilato
 
Building your own search engine with Apache Solr
Building your own search engine with Apache SolrBuilding your own search engine with Apache Solr
Building your own search engine with Apache Solr
Biogeeks
 
RDF validation tutorial
RDF validation tutorialRDF validation tutorial
RDF validation tutorial
Jose Emilio Labra Gayo
 
Solr Application Development Tutorial
Solr Application Development TutorialSolr Application Development Tutorial
Solr Application Development Tutorial
Erik Hatcher
 
04 standard class library c#
04 standard class library c#04 standard class library c#
04 standard class library c#
Victor Matyushevskyy
 
Introduction to Solr
Introduction to SolrIntroduction to Solr
Introduction to Solr
Erik Hatcher
 
ElasticSearch: Найдется все... и быстро!
ElasticSearch: Найдется все... и быстро!ElasticSearch: Найдется все... и быстро!
ElasticSearch: Найдется все... и быстро!
Alexander Byndyu
 
20130310 solr tuorial
20130310 solr tuorial20130310 solr tuorial
20130310 solr tuorial
Chris Huang
 
Enterprise Search Solution: Apache SOLR. What's available and why it's so cool
Enterprise Search Solution: Apache SOLR. What's available and why it's so coolEnterprise Search Solution: Apache SOLR. What's available and why it's so cool
Enterprise Search Solution: Apache SOLR. What's available and why it's so cool
Ecommerce Solution Provider SysIQ
 
Building a Scalable Inbox System with MongoDB and Java
Building a Scalable Inbox System with MongoDB and JavaBuilding a Scalable Inbox System with MongoDB and Java
Building a Scalable Inbox System with MongoDB and Java
antoinegirbal
 
Schemaless Solr and the Solr Schema REST API
Schemaless Solr and the Solr Schema REST APISchemaless Solr and the Solr Schema REST API
Schemaless Solr and the Solr Schema REST API
lucenerevolution
 
Solr: 4 big features
Solr: 4 big featuresSolr: 4 big features
Solr: 4 big features
David Smiley
 
MongoDB Schema Design: Four Real-World Examples
MongoDB Schema Design: Four Real-World ExamplesMongoDB Schema Design: Four Real-World Examples
MongoDB Schema Design: Four Real-World Examples
Mike Friedman
 
よく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_nightよく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_night
Kenji Tanaka
 
Elastify you application: from SQL to NoSQL in less than one hour!
Elastify you application: from SQL to NoSQL in less than one hour!Elastify you application: from SQL to NoSQL in less than one hour!
Elastify you application: from SQL to NoSQL in less than one hour!
David Pilato
 
Building your own search engine with Apache Solr
Building your own search engine with Apache SolrBuilding your own search engine with Apache Solr
Building your own search engine with Apache Solr
Biogeeks
 
Solr Application Development Tutorial
Solr Application Development TutorialSolr Application Development Tutorial
Solr Application Development Tutorial
Erik Hatcher
 

Similar to NoSQL store everyone ignored - Postgres Conf 2021 (20)

The NoSQL store everyone ignored
The NoSQL store everyone ignoredThe NoSQL store everyone ignored
The NoSQL store everyone ignored
Zohaib Hassan
 
Simon Elliston Ball – When to NoSQL and When to Know SQL - NoSQL matters Barc...
Simon Elliston Ball – When to NoSQL and When to Know SQL - NoSQL matters Barc...Simon Elliston Ball – When to NoSQL and When to Know SQL - NoSQL matters Barc...
Simon Elliston Ball – When to NoSQL and When to Know SQL - NoSQL matters Barc...
NoSQLmatters
 
SQL vs NoSQL
SQL vs NoSQLSQL vs NoSQL
SQL vs NoSQL
Jacinto Limjap
 
Turning a Search Engine into a Relational Database
Turning a Search Engine into a Relational DatabaseTurning a Search Engine into a Relational Database
Turning a Search Engine into a Relational Database
Matthias Wahl
 
Mathias test
Mathias testMathias test
Mathias test
Mathias Stjernström
 
Json to hive_schema_generator
Json to hive_schema_generatorJson to hive_schema_generator
Json to hive_schema_generator
Payal Jain
 
2011 Mongo FR - MongoDB introduction
2011 Mongo FR - MongoDB introduction2011 Mongo FR - MongoDB introduction
2011 Mongo FR - MongoDB introduction
antoinegirbal
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
antoinegirbal
 
TDC2016POA | Trilha Web - JSON API: não reinvente a roda
TDC2016POA | Trilha Web - JSON API: não reinvente a rodaTDC2016POA | Trilha Web - JSON API: não reinvente a roda
TDC2016POA | Trilha Web - JSON API: não reinvente a roda
tdc-globalcode
 
Full Text Search In PostgreSQL
Full Text Search In PostgreSQLFull Text Search In PostgreSQL
Full Text Search In PostgreSQL
Karwin Software Solutions LLC
 
Conceptos básicos. seminario web 3 : Diseño de esquema pensado para documentos
Conceptos básicos. seminario web 3 : Diseño de esquema pensado para documentosConceptos básicos. seminario web 3 : Diseño de esquema pensado para documentos
Conceptos básicos. seminario web 3 : Diseño de esquema pensado para documentos
MongoDB
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress
Taylor Lovett
 
ElasticSearch in action
ElasticSearch in actionElasticSearch in action
ElasticSearch in action
Codemotion
 
Flexible site structure with cake php
Flexible site structure with cake phpFlexible site structure with cake php
Flexible site structure with cake php
andygale
 
The emerging world of mongo db csp
The emerging world of mongo db   cspThe emerging world of mongo db   csp
The emerging world of mongo db csp
Carlos Sánchez Pérez
 
Building your first app with MongoDB
Building your first app with MongoDBBuilding your first app with MongoDB
Building your first app with MongoDB
Norberto Leite
 
Basic PowerShell Toolmaking - Spiceworld 2016 session
Basic PowerShell Toolmaking - Spiceworld 2016 sessionBasic PowerShell Toolmaking - Spiceworld 2016 session
Basic PowerShell Toolmaking - Spiceworld 2016 session
Rob Dunn
 
TYPO3 Transition Tool
TYPO3 Transition ToolTYPO3 Transition Tool
TYPO3 Transition Tool
crus0e
 
Php reports sumit
Php reports sumitPhp reports sumit
Php reports sumit
Sumit Biswas
 
REST easy with API Platform
REST easy with API PlatformREST easy with API Platform
REST easy with API Platform
Antonio Peric-Mazar
 
The NoSQL store everyone ignored
The NoSQL store everyone ignoredThe NoSQL store everyone ignored
The NoSQL store everyone ignored
Zohaib Hassan
 
Simon Elliston Ball – When to NoSQL and When to Know SQL - NoSQL matters Barc...
Simon Elliston Ball – When to NoSQL and When to Know SQL - NoSQL matters Barc...Simon Elliston Ball – When to NoSQL and When to Know SQL - NoSQL matters Barc...
Simon Elliston Ball – When to NoSQL and When to Know SQL - NoSQL matters Barc...
NoSQLmatters
 
Turning a Search Engine into a Relational Database
Turning a Search Engine into a Relational DatabaseTurning a Search Engine into a Relational Database
Turning a Search Engine into a Relational Database
Matthias Wahl
 
Json to hive_schema_generator
Json to hive_schema_generatorJson to hive_schema_generator
Json to hive_schema_generator
Payal Jain
 
2011 Mongo FR - MongoDB introduction
2011 Mongo FR - MongoDB introduction2011 Mongo FR - MongoDB introduction
2011 Mongo FR - MongoDB introduction
antoinegirbal
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
antoinegirbal
 
TDC2016POA | Trilha Web - JSON API: não reinvente a roda
TDC2016POA | Trilha Web - JSON API: não reinvente a rodaTDC2016POA | Trilha Web - JSON API: não reinvente a roda
TDC2016POA | Trilha Web - JSON API: não reinvente a roda
tdc-globalcode
 
Conceptos básicos. seminario web 3 : Diseño de esquema pensado para documentos
Conceptos básicos. seminario web 3 : Diseño de esquema pensado para documentosConceptos básicos. seminario web 3 : Diseño de esquema pensado para documentos
Conceptos básicos. seminario web 3 : Diseño de esquema pensado para documentos
MongoDB
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress
Taylor Lovett
 
ElasticSearch in action
ElasticSearch in actionElasticSearch in action
ElasticSearch in action
Codemotion
 
Flexible site structure with cake php
Flexible site structure with cake phpFlexible site structure with cake php
Flexible site structure with cake php
andygale
 
Building your first app with MongoDB
Building your first app with MongoDBBuilding your first app with MongoDB
Building your first app with MongoDB
Norberto Leite
 
Basic PowerShell Toolmaking - Spiceworld 2016 session
Basic PowerShell Toolmaking - Spiceworld 2016 sessionBasic PowerShell Toolmaking - Spiceworld 2016 session
Basic PowerShell Toolmaking - Spiceworld 2016 session
Rob Dunn
 
TYPO3 Transition Tool
TYPO3 Transition ToolTYPO3 Transition Tool
TYPO3 Transition Tool
crus0e
 
Ad

Recently uploaded (20)

Time Estimation: Expert Tips & Proven Project Techniques
Time Estimation: Expert Tips & Proven Project TechniquesTime Estimation: Expert Tips & Proven Project Techniques
Time Estimation: Expert Tips & Proven Project Techniques
Livetecs LLC
 
AI in Business Software: Smarter Systems or Hidden Risks?
AI in Business Software: Smarter Systems or Hidden Risks?AI in Business Software: Smarter Systems or Hidden Risks?
AI in Business Software: Smarter Systems or Hidden Risks?
Amara Nielson
 
sequencediagrams.pptx software Engineering
sequencediagrams.pptx software Engineeringsequencediagrams.pptx software Engineering
sequencediagrams.pptx software Engineering
aashrithakondapalli8
 
Serato DJ Pro Crack Latest Version 2025??
Serato DJ Pro Crack Latest Version 2025??Serato DJ Pro Crack Latest Version 2025??
Serato DJ Pro Crack Latest Version 2025??
Web Designer
 
[gbgcpp] Let's get comfortable with concepts
[gbgcpp] Let's get comfortable with concepts[gbgcpp] Let's get comfortable with concepts
[gbgcpp] Let's get comfortable with concepts
Dimitrios Platis
 
The Elixir Developer - All Things Open
The Elixir Developer - All Things OpenThe Elixir Developer - All Things Open
The Elixir Developer - All Things Open
Carlo Gilmar Padilla Santana
 
Surviving a Downturn Making Smarter Portfolio Decisions with OnePlan - Webina...
Surviving a Downturn Making Smarter Portfolio Decisions with OnePlan - Webina...Surviving a Downturn Making Smarter Portfolio Decisions with OnePlan - Webina...
Surviving a Downturn Making Smarter Portfolio Decisions with OnePlan - Webina...
OnePlan Solutions
 
Best HR and Payroll Software in Bangladesh - accordHRM
Best HR and Payroll Software in Bangladesh - accordHRMBest HR and Payroll Software in Bangladesh - accordHRM
Best HR and Payroll Software in Bangladesh - accordHRM
accordHRM
 
Mobile Application Developer Dubai | Custom App Solutions by Ajath
Mobile Application Developer Dubai | Custom App Solutions by AjathMobile Application Developer Dubai | Custom App Solutions by Ajath
Mobile Application Developer Dubai | Custom App Solutions by Ajath
Ajath Infotech Technologies LLC
 
Buy vs. Build: Unlocking the right path for your training tech
Buy vs. Build: Unlocking the right path for your training techBuy vs. Build: Unlocking the right path for your training tech
Buy vs. Build: Unlocking the right path for your training tech
Rustici Software
 
Adobe Media Encoder Crack FREE Download 2025
Adobe Media Encoder  Crack FREE Download 2025Adobe Media Encoder  Crack FREE Download 2025
Adobe Media Encoder Crack FREE Download 2025
zafranwaqar90
 
Why Tapitag Ranks Among the Best Digital Business Card Providers
Why Tapitag Ranks Among the Best Digital Business Card ProvidersWhy Tapitag Ranks Among the Best Digital Business Card Providers
Why Tapitag Ranks Among the Best Digital Business Card Providers
Tapitag
 
Wilcom Embroidery Studio Crack Free Latest 2025
Wilcom Embroidery Studio Crack Free Latest 2025Wilcom Embroidery Studio Crack Free Latest 2025
Wilcom Embroidery Studio Crack Free Latest 2025
Web Designer
 
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World ExamplesMastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
jamescantor38
 
How to Troubleshoot 9 Types of OutOfMemoryError
How to Troubleshoot 9 Types of OutOfMemoryErrorHow to Troubleshoot 9 Types of OutOfMemoryError
How to Troubleshoot 9 Types of OutOfMemoryError
Tier1 app
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
!%& IDM Crack with Internet Download Manager 6.42 Build 32 >
!%& IDM Crack with Internet Download Manager 6.42 Build 32 >!%& IDM Crack with Internet Download Manager 6.42 Build 32 >
!%& IDM Crack with Internet Download Manager 6.42 Build 32 >
Ranking Google
 
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdfTop Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
evrigsolution
 
Passive House Canada Conference 2025 Presentation [Final]_v4.ppt
Passive House Canada Conference 2025 Presentation [Final]_v4.pptPassive House Canada Conference 2025 Presentation [Final]_v4.ppt
Passive House Canada Conference 2025 Presentation [Final]_v4.ppt
IES VE
 
Exchange Migration Tool- Shoviv Software
Exchange Migration Tool- Shoviv SoftwareExchange Migration Tool- Shoviv Software
Exchange Migration Tool- Shoviv Software
Shoviv Software
 
Time Estimation: Expert Tips & Proven Project Techniques
Time Estimation: Expert Tips & Proven Project TechniquesTime Estimation: Expert Tips & Proven Project Techniques
Time Estimation: Expert Tips & Proven Project Techniques
Livetecs LLC
 
AI in Business Software: Smarter Systems or Hidden Risks?
AI in Business Software: Smarter Systems or Hidden Risks?AI in Business Software: Smarter Systems or Hidden Risks?
AI in Business Software: Smarter Systems or Hidden Risks?
Amara Nielson
 
sequencediagrams.pptx software Engineering
sequencediagrams.pptx software Engineeringsequencediagrams.pptx software Engineering
sequencediagrams.pptx software Engineering
aashrithakondapalli8
 
Serato DJ Pro Crack Latest Version 2025??
Serato DJ Pro Crack Latest Version 2025??Serato DJ Pro Crack Latest Version 2025??
Serato DJ Pro Crack Latest Version 2025??
Web Designer
 
[gbgcpp] Let's get comfortable with concepts
[gbgcpp] Let's get comfortable with concepts[gbgcpp] Let's get comfortable with concepts
[gbgcpp] Let's get comfortable with concepts
Dimitrios Platis
 
Surviving a Downturn Making Smarter Portfolio Decisions with OnePlan - Webina...
Surviving a Downturn Making Smarter Portfolio Decisions with OnePlan - Webina...Surviving a Downturn Making Smarter Portfolio Decisions with OnePlan - Webina...
Surviving a Downturn Making Smarter Portfolio Decisions with OnePlan - Webina...
OnePlan Solutions
 
Best HR and Payroll Software in Bangladesh - accordHRM
Best HR and Payroll Software in Bangladesh - accordHRMBest HR and Payroll Software in Bangladesh - accordHRM
Best HR and Payroll Software in Bangladesh - accordHRM
accordHRM
 
Mobile Application Developer Dubai | Custom App Solutions by Ajath
Mobile Application Developer Dubai | Custom App Solutions by AjathMobile Application Developer Dubai | Custom App Solutions by Ajath
Mobile Application Developer Dubai | Custom App Solutions by Ajath
Ajath Infotech Technologies LLC
 
Buy vs. Build: Unlocking the right path for your training tech
Buy vs. Build: Unlocking the right path for your training techBuy vs. Build: Unlocking the right path for your training tech
Buy vs. Build: Unlocking the right path for your training tech
Rustici Software
 
Adobe Media Encoder Crack FREE Download 2025
Adobe Media Encoder  Crack FREE Download 2025Adobe Media Encoder  Crack FREE Download 2025
Adobe Media Encoder Crack FREE Download 2025
zafranwaqar90
 
Why Tapitag Ranks Among the Best Digital Business Card Providers
Why Tapitag Ranks Among the Best Digital Business Card ProvidersWhy Tapitag Ranks Among the Best Digital Business Card Providers
Why Tapitag Ranks Among the Best Digital Business Card Providers
Tapitag
 
Wilcom Embroidery Studio Crack Free Latest 2025
Wilcom Embroidery Studio Crack Free Latest 2025Wilcom Embroidery Studio Crack Free Latest 2025
Wilcom Embroidery Studio Crack Free Latest 2025
Web Designer
 
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World ExamplesMastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
jamescantor38
 
How to Troubleshoot 9 Types of OutOfMemoryError
How to Troubleshoot 9 Types of OutOfMemoryErrorHow to Troubleshoot 9 Types of OutOfMemoryError
How to Troubleshoot 9 Types of OutOfMemoryError
Tier1 app
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
!%& IDM Crack with Internet Download Manager 6.42 Build 32 >
!%& IDM Crack with Internet Download Manager 6.42 Build 32 >!%& IDM Crack with Internet Download Manager 6.42 Build 32 >
!%& IDM Crack with Internet Download Manager 6.42 Build 32 >
Ranking Google
 
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdfTop Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
evrigsolution
 
Passive House Canada Conference 2025 Presentation [Final]_v4.ppt
Passive House Canada Conference 2025 Presentation [Final]_v4.pptPassive House Canada Conference 2025 Presentation [Final]_v4.ppt
Passive House Canada Conference 2025 Presentation [Final]_v4.ppt
IES VE
 
Exchange Migration Tool- Shoviv Software
Exchange Migration Tool- Shoviv SoftwareExchange Migration Tool- Shoviv Software
Exchange Migration Tool- Shoviv Software
Shoviv Software
 
Ad

NoSQL store everyone ignored - Postgres Conf 2021