SlideShare uma empresa Scribd logo
1 de 59
Baixar para ler offline
NoSQL em um mundo SQL
Airton Lastori
airton.lastori@oracle.com
Abril-2016
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
DBA Dev Gerencial
Quem?
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Nunca usou
NoSQL
Usa NoSQL apenas
em apps não-
críticas
NoSQL em apps
críticas
Quem?
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Agenda
1. NoSQL?
2. Uso do relacional como não-relacional
3. NewSQL
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
NoSQL?
uma breve introdução
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted 6
NoSQL = Não-relacional
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Modelo Relacional
• Edgard F. Codd
–1970, IBM
–Turing Award 1981
• Forte base teórica matemática
–teoria dos conjuntos, lógica de predicados, etc.
• Implementada como SQL
Oracle Confidential – Internal/Restricted/Highly Restricted 7
The relational model for database management: version 2
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted 8
SQL = implementação do modelo
relacional
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Sistemas Gerenciadores de Bancos de Dados Relacionais
• Software para gerenciar dados baseados no Modelo Relacional
• Estrutura lógica dos dados – visão do usuário
– Dados organizados em tabelas compostas de linhas e colunas e possuem regras de
relacionamento entre sí (constraints)
• Conhecidos como Dados Estruturados
– SQL permite criar, manter e consultar os dados nestas estruturas
– Normalização e Constraints evitam duplicidade da informação, aumentando
consistência e qualidade dos dados
– propriedades ACID (suporte a transações)
• Estrutura física dos dados – visão da máquina
– Árvores B*Tree = buscas muito rápidas O(log n)
Oracle Confidential – Internal/Restricted/Highly Restricted 9
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Vários modelos de dados
• O modelo relacional não resolve bem todos os problemas
• 1960 - navigacional
– Hierárquico
– Network
• 1970 - SQL/relacional
• 1990 - Orientado a Objetos
– em parte, absorvido pelos SGBDRs
• 2000 – NoSQL
– será absorvido pelos SGBDRs? Apenas um Hype?
Oracle Confidential – Internal/Restricted/Highly Restricted 11
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
A Web
Oracle Confidential – Internal/Restricted/Highly Restricted 12
Dados massivos, problemas Big Data
Altíssima escala
Sempre online
Estratégia: hardwares commodity em nuvem + software livre
Modelo relacional: difícil escalar e implementar alta
disponibilidade em nuvem de hw commodity
www.leavcom.com/pdf/NoSQL.pdf
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Standalone Clusterizado
Oracle Confidential – Internal/Restricted/Highly Restricted 13
Problemas diferentes
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Problemas em ambientes clusterizados
• Quando os dados estão normalizados e distribuídos, é difícil manter a
performance
• Quando os dados estão distribuídos, é difícil manter a consistência e
implementar transações
• Quando o dado está distribuído em hw commodity, é preciso ter
duplicidade e sincronização para tolerância a falhas
• Etc.
Que tal abrir mão de algumas coisas do modelo relacional em prol de outras?
Oracle Confidential – Internal/Restricted/Highly Restricted 14
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted 15
Web = gatilho para o surgimento das
tecnologias NoSQL
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 16
http://db-engines.com/en/ranking_categories
183NoSQL
12categorias
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Características comuns
• Alta Performance
– Normalmente um banco NoSQL é muito rápido, pois possui uma arquitetura
simplificada
• Evita operações de JOINs
– armazenando dados duplicados e denormalizados
• Projetado para escalar Horizontalmente
– Lembra da Cloud Computing? Pois é...
• Normalmente abre-se mão de funcionalidades em prol da simplicidade de
uso, inclusive em escala
Oracle Confidential – Internal/Restricted/Highly Restricted 17
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Schemaless
• key-value
• document
• wide column
• graph
• Etc
• Muda o modelo lógico, a visão do usuário
– Outras APIs de acesso = Not Only SQL
– Em muitos casos, simplifica a vida do desenvolvedor (do DBA, nem tanto...)
Oracle Confidential – Internal/Restricted/Highly Restricted 18
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted 19
Computação acessível via clouds
públicas, software livre e simplicidade
no uso tornam o movimento NoSQL
muito relevante
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 20
http://db-engines.com/en/ranking_trend (mar-2016)
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Uso do relacional como não-relacional
casos de sucesso da web
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Grandes usuários MySQL
23
Web, Cloud, Distribuído e Embarcado…
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted 24
Muitas foram start ups há poucos
anos, começaram e cresceram com
MySQL
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Usa MySQL como NoSQL
eng.uber.com/schemaless-part-one
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Usa MySQL como NoSQL
eng.uber.com/schemaless-part-one
• Our new solution needed to be able to linearly add capacity by adding more servers
• We needed write availability – substituir Redis como data pipeline em busca de
consistência de leitura sem abrir mão da performance de escrita
• We needed secondary indexes – saindo do Postgres, mas mantendo a mesma
funcionalidade
• We needed operation trust in the system, as it contains mission-critical trip data
• We needed a way of notifying downstream dependencies – múltiplos processos
(billing, analytics) inter-dependentes, mas que precisam ser isolados para escalar e
sem perdas
•
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Usa MySQL como NoSQL
eng.uber.com/schemaless-part-one
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Usa MySQL como NoSQL
eng.uber.com/schemaless-part-one
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
“We had an unexpected loss of data on
nearly every technology we used at
one time or another, except MySQL.”
– Pinterest Engineering
Oracle Confidential – Internal/Restricted/Highly Restricted 29
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
NewSQL
o mundo relacional abraça o NoSQL
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Suporte ao modelo chave-valor
• Memcached plug-in
Oracle Confidential – Internal/Restricted/Highly Restricted 31
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
MySQL 5.7 Sysbench Benchmark: SQL Point Selects
3x Faster than MySQL 5.6
1,600,000 QPS
0
200,000
400,000
600,000
800,000
1,000,000
1,200,000
1,400,000
1,600,000
1,800,000
8 16 32 64 128 256 512 1,024
QueriesperSecond
Connections
MySQL 5.7: Sysbench OLTP Read Only (SQL Point Selects)
MySQL 5.7
MySQL 5.6
MySQL 5.5
Intel(R) Xeon(R) CPU E7-8890 v3
4 sockets x 18 cores-HT (144 CPU threads)
2.5 Ghz, 512GB RAM
Linux kernel 3.16
32
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Suporte ao modelo orientado a documentos no MySQL 5.7
1. Native JSON datatype
2. JSON Functions
3. Generated Columns
33
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Tipo nativo JSON
34
CREATE TABLE employees (data JSON);
INSERT INTO employees VALUES ('{"id": 1, "name": "Jane"}');
INSERT INTO employees VALUES ('{"id": 2, "name": "Joe"}');
SELECT * FROM employees;
+---------------------------+
| data |
+---------------------------+
| {"id": 1, "name": "Jane"} |
| {"id": 2, "name": "Joe"} |
+---------------------------+
2 rows in set (0,00 sec)
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Vantagens sobre tipos TEXT/VARCHAR
1. Document Validation:
2. Eficiência no armazenamento físico
Allows quicker access to object members and array elements because its optimized
binary format
37
INSERT INTO employees VALUES ('some random text');
ERROR 3130 (22032): Invalid JSON text: "Expect a value here." at
position 0 in value (or column) 'some random text'.
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
JSON Functions
38
SET @document = '[10, 20, [30, 40]]';
SELECT JSON_EXTRACT(@document, '$[1]');
+---------------------------------+
| JSON_EXTRACT(@document, '$[1]') |
+---------------------------------+
| 20 |
+---------------------------------+
1 row in set (0.01 sec)
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Testes com dados reais
• Via SF OpenData
• 206K JSON objects
representing subdivision
parcels.
• Imported from https://github.com/zemirco/sf-city-lots-json + small tweaks
39
CREATE TABLE features (
id INT NOT NULL auto_increment primary key,
feature JSON NOT NULL
);
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 40
{
"type":"Feature",
"geometry":{
"type":"Polygon",
"coordinates":[
[
[-122.42200352825247,37.80848009696725,0],
[-122.42207601332528,37.808835019815085,0],
[-122.42110217434865,37.808803534992904,0],
[-122.42106256906727,37.80860105681814,0],
[-122.42200352825247,37.80848009696725,0]
]
]
},
"properties":{
"TO_ST":"0",
"BLKLOT":"0001001",
"STREET":"UNKNOWN",
"FROM_ST":"0",
"LOT_NUM":"001",
"ST_TYPE":null,
"ODD_EVEN":"E",
"BLOCK_NUM":"0001",
"MAPBLKLOT":"0001001"
}
}
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Naive Performance Comparison
41
# as JSON type
SELECT DISTINCT
feature->"$.type" as json_extract
FROM features;
+--------------+
| json_extract |
+--------------+
| "Feature" |
+--------------+
1 row in set (1.25 sec)
Unindexed traversal of 206K documents
# as TEXT type
SELECT DISTINCT
feature->"$.type" as json_extract
FROM features;
+--------------+
| json_extract |
+--------------+
| "Feature" |
+--------------+
1 row in set (12.85 sec)
Explanation: Binary format of JSON type is very efficient at searching. Storing as TEXT
performs over 10x worse at traversal.
Using short cut for
JSON_EXTRACT. Coming
in 5.7.9.
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Generated Columns
42
id my_integer my_integer_plus_one
1 10 11
2 20 21
3 30 31
4 40 41
CREATE TABLE t1 (
id INT NOT NULL PRIMARY KEY auto_increment,
my_integer INT,
my_integer_plus_one INT AS (my_integer+1)
);
UPDATE t1 SET my_integer_plus_one = 10 WHERE id = 1;
ERROR 3105 (HY000): The value specified for generated column
'my_integer_plus_one' in table 't1' is not allowed.
Column automatically maintained based
on your specification.
Read-only of course
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Generated Columns Support Indexes!
43
ALTER TABLE features ADD feature_type VARCHAR(30) AS (feature->"$.type");
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE features ADD INDEX (feature_type);
Query OK, 0 rows affected (0.73 sec)
Records: 0 Duplicates: 0 Warnings: 0
SELECT DISTINCT feature_type FROM features;
+--------------+
| feature_type |
+--------------+
| "Feature" |
+--------------+
1 row in set (0.06 sec)
From table scan on 206K documents to index scan on 206K materialized values
Down from 1.25 sec to 0.06
sec
Creates index only.
Does not modify table
rows.
Meta data change only
(FAST). Does not need to
touch table.
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Generated Columns (cont.)
• Used for “functional index”
• Available as either VIRTUAL (default) or STORED:
• Both types of computed columns permit for indexes to be added.
44
ALTER TABLE features ADD feature_type varchar(30) AS (feature-
>"$.type") STORED;
Query OK, 206560 rows affected (4.70 sec)
Records: 206560 Duplicates: 0 Warnings: 0
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Indexing Options Available
45
STORED VIRTUAL
Primary and Secondary
BTREE, Fulltext, GIS
Mixed with fields
Requires table rebuild
Not Online
Secondary Only
BTREE Only
Mixed with fields
No table rebuild
INSTANT Alter
Faster Insert
Bottom Line: Unless you need a PRIMARY KEY, FULLTEXT or GIS index VIRTUAL is probably better.
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Virtual vs. Stored Performance
• Approximate worst case scenario via a table scan:
46
SELECT DISTINCT feature_type FROM
features;
+--------------+
| feature_type |
+--------------+
| "Feature" |
+--------------+
VIRTUAL-TEXT (9.89 sec)
STORED-TEXT (0.22 sec)
VIRTUAL-JSON (0.85 sec)
STORED-JSON (0.24 sec)
Clarification: Since indexes are materialized (stored) themselves, the real-life case for STORED
is when generating the column is computationally expensive and you can not use indexes
effectively.
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Unquote JSON String
SELECT
DISTINCT JSON_UNQUOTE(feature->"$.type")
as feature_type
FROM features;
+-----------------+
| feature_type |
+-----------------+
| Feature |
+-----------------+
1 row in set (1.22 sec)
47
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
JSON Path Search
• Provides a novice way to know the path. To retrieve via:
[[database.]table.]column->"$<path spec>"
48
SELECT JSON_SEARCH(feature,
'one', 'MARKET') AS
extract_path
FROM features
WHERE id = 121254;
+-----------------------+
| extract_path |
+-----------------------+
| "$.properties.STREET" |
+-----------------------+
1 row in set (0.00 sec)
SELECT
feature->"$.properties.STREET"
AS property_street
FROM features
WHERE id = 121254;
+-----------------+
| property_street |
+-----------------+
| "MARKET" |
+-----------------+
1 row in set (0.00 sec)
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
JSON Array Creation
49
SELECT JSON_ARRAY(id,
feature->"$.properties.STREET",
feature->'$.type") AS json_array
FROM features ORDER BY RAND() LIMIT 3;
+-------------------------------+
| json_array |
+-------------------------------+
| [65298, "10TH", "Feature"] |
| [122985, "08TH", "Feature"] |
| [172884, "CURTIS", "Feature"] |
+-------------------------------+
3 rows in set (2.66 sec)
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
JSON Object Creation
50
SELECT JSON_OBJECT('id', id,
'street', feature->"$.properties.STREET",
'type', feature->"$.type"
) AS json_object
FROM features ORDER BY RAND() LIMIT 3;
+--------------------------------------------------------+
| json_object |
+--------------------------------------------------------+
| {"id": 122976, "type": "Feature", "street": "RAUSCH"} |
| {"id": 148698, "type": "Feature", "street": "WALLACE"} |
| {"id": 45214, "type": "Feature", "street": "HAIGHT"} |
+--------------------------------------------------------+
3 rows in set (3.11 sec)
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
JSON_REPLACE
51
SELECT JSON_REPLACE(feature, '$.type', JSON_ARRAY('feature', 'bug')) as
json_object FROM features LIMIT 1;
+--------------------------------------------------------+
| json_object |
+--------------------------------------------------------+
| {"type": ["feature", "bug"], "geometry": {"type": ..}} |
+--------------------------------------------------------+
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
• 5.7 supports functions to CREATE, SEARCH, MODIFY and RETURN JSON
values:
JSON Functions
52
JSON_ARRAY_APPEND()
JSON_ARRAY_INSERT()
JSON_ARRAY()
JSON_CONTAINS_PATH()
JSON_CONTAINS()
JSON_DEPTH()
JSON_EXTRACT()
JSON_INSERT()
JSON_KEYS()
JSON_LENGTH()
JSON_MERGE()
JSON_OBJECT()
JSON_QUOTE()
JSON_REMOVE()
JSON_REPLACE()
JSON_SEARCH()
JSON_SET()
JSON_TYPE()
JSON_UNQUOTE()
JSON_VALID()
https://dev.mysql.com/doc/refman/5.7/en/json-functions.html
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
JSON Comparator
53
SELECT CAST(1 AS JSON) = 1;
+---------------------+
| CAST(1 AS JSON) = 1 |
+---------------------+
| 1 |
+---------------------+
1 row in set (0.01 sec)
JSON value of 1 equals 1
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
JSON ou Coluna?
• Você escolhe
• Vantagens em ambas abordagens
54
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Storing as a Column
• Easier to apply a schema to your application
• Schema may make applications easier to maintain over time, as change is
controlled;
• Do not have to expect as many permutations
• Allows some constraints over data
55
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Storing as JSON
• More flexible way to represent data that is hard to model in schema;
• Imagine you are a SaaS application serving many customers
• Strong use-case to support custom-fields
• Historically this may have used Entity–attribute–value model (EAV). Does
not always perform well
56
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
JSON (cont.)
• Easier denormalization; an optimization that is important in some specific
situations
• No painful schema changes*
• Easier prototyping
• Fewer types to consider
• No enforced schema, start storing values immediately
57
* MySQL 5.6 has Online DDL. This is not as large of an issue as it
was historically.
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Schema + Schemaless
58
SSDs have capacity_in_gb, CPUs have a core_count. These attributes are not consistent
across products.
CREATE TABLE pc_components (
id INT NOT NULL PRIMARY KEY,
description VARCHAR(60) NOT NULL,
vendor VARCHAR(30) NOT NULL,
serial_number VARCHAR(30) NOT NULL,
attributes JSON NOT NULL
);
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Sumário
1. O movimento NoSQL é de grande relevância e têm os
gigantes da Web como protagonistas
2. NoSQL complementa Bancos Relacionais
3. NewSQL = combinando os dois mundos
4. MySQL continua muito relevante na Web
5. Memcached plugin e JSON são exemplos no MySQL de
como bancos relacionais podem abraçar o NoSQL
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Obrigado!
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
@MySQLBR meetup.com/MySQL-BRfacebook.com/MySQLBR
pt.planet.mysql.com
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Perguntas?
NoSQL em um mundo SQL
Contato:
airton.lastori@oracle.com
twitter.com/mysqlbr
facebook.com/mysqlbr
NoSQL no MySQL 5.7

Mais conteúdo relacionado

Mais procurados

MySQL 5.7: Focus on Replication
MySQL 5.7: Focus on ReplicationMySQL 5.7: Focus on Replication
MySQL 5.7: Focus on ReplicationMario Beck
 
MySQL High Availibility Solutions
MySQL High Availibility SolutionsMySQL High Availibility Solutions
MySQL High Availibility SolutionsMark Swarbrick
 
MySQL Manchester TT - 5.7 Whats new
MySQL Manchester TT - 5.7 Whats newMySQL Manchester TT - 5.7 Whats new
MySQL Manchester TT - 5.7 Whats newMark Swarbrick
 
MySQL Cluster as Transactional NoSQL (KVS)
MySQL Cluster as Transactional NoSQL (KVS)MySQL Cluster as Transactional NoSQL (KVS)
MySQL Cluster as Transactional NoSQL (KVS)Ryusuke Kajiyama
 
MySQL 5.7 Replication News
MySQL 5.7 Replication News MySQL 5.7 Replication News
MySQL 5.7 Replication News Ted Wennmark
 
20140722 Taiwan MySQL User Group Meeting Tech Updates
20140722 Taiwan MySQL User Group Meeting Tech Updates20140722 Taiwan MySQL User Group Meeting Tech Updates
20140722 Taiwan MySQL User Group Meeting Tech UpdatesRyusuke Kajiyama
 
MySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group ReplicationMySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group ReplicationFrederic Descamps
 
MySQL Tech Tour 2015 - Alt Intro
MySQL Tech Tour 2015 - Alt IntroMySQL Tech Tour 2015 - Alt Intro
MySQL Tech Tour 2015 - Alt IntroMark Swarbrick
 
MySQL Manchester TT - Replication Features
MySQL Manchester TT  - Replication FeaturesMySQL Manchester TT  - Replication Features
MySQL Manchester TT - Replication FeaturesMark Swarbrick
 
MySQL 5.6, news in 5.7 and our HA options
MySQL 5.6, news in 5.7 and our HA optionsMySQL 5.6, news in 5.7 and our HA options
MySQL 5.6, news in 5.7 and our HA optionsTed Wennmark
 
MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)Olivier DASINI
 
MySQL Tech Tour 2015 - 5.7 Connector/J/Net
MySQL Tech Tour 2015 - 5.7 Connector/J/NetMySQL Tech Tour 2015 - 5.7 Connector/J/Net
MySQL Tech Tour 2015 - 5.7 Connector/J/NetMark Swarbrick
 
01 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv101 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv1Ivan Ma
 
TWJUG August, What's new in MySQL 5.7 RC
TWJUG August, What's new in MySQL 5.7 RCTWJUG August, What's new in MySQL 5.7 RC
TWJUG August, What's new in MySQL 5.7 RCRyusuke Kajiyama
 
MySQL for Software-as-a-Service (SaaS)
MySQL for Software-as-a-Service (SaaS)MySQL for Software-as-a-Service (SaaS)
MySQL for Software-as-a-Service (SaaS)Mario Beck
 
MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015Mario Beck
 
devops Days Belgium Ghent 2016
devops Days Belgium Ghent 2016devops Days Belgium Ghent 2016
devops Days Belgium Ghent 2016Frederic Descamps
 
TWJUG August, MySQL JDBC Driver "Connector/J"
TWJUG August, MySQL JDBC Driver "Connector/J"TWJUG August, MySQL JDBC Driver "Connector/J"
TWJUG August, MySQL JDBC Driver "Connector/J"Ryusuke Kajiyama
 
MySQL Security
MySQL SecurityMySQL Security
MySQL SecurityMario Beck
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLOlivier DASINI
 

Mais procurados (20)

MySQL 5.7: Focus on Replication
MySQL 5.7: Focus on ReplicationMySQL 5.7: Focus on Replication
MySQL 5.7: Focus on Replication
 
MySQL High Availibility Solutions
MySQL High Availibility SolutionsMySQL High Availibility Solutions
MySQL High Availibility Solutions
 
MySQL Manchester TT - 5.7 Whats new
MySQL Manchester TT - 5.7 Whats newMySQL Manchester TT - 5.7 Whats new
MySQL Manchester TT - 5.7 Whats new
 
MySQL Cluster as Transactional NoSQL (KVS)
MySQL Cluster as Transactional NoSQL (KVS)MySQL Cluster as Transactional NoSQL (KVS)
MySQL Cluster as Transactional NoSQL (KVS)
 
MySQL 5.7 Replication News
MySQL 5.7 Replication News MySQL 5.7 Replication News
MySQL 5.7 Replication News
 
20140722 Taiwan MySQL User Group Meeting Tech Updates
20140722 Taiwan MySQL User Group Meeting Tech Updates20140722 Taiwan MySQL User Group Meeting Tech Updates
20140722 Taiwan MySQL User Group Meeting Tech Updates
 
MySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group ReplicationMySQL InnoDB Cluster - Group Replication
MySQL InnoDB Cluster - Group Replication
 
MySQL Tech Tour 2015 - Alt Intro
MySQL Tech Tour 2015 - Alt IntroMySQL Tech Tour 2015 - Alt Intro
MySQL Tech Tour 2015 - Alt Intro
 
MySQL Manchester TT - Replication Features
MySQL Manchester TT  - Replication FeaturesMySQL Manchester TT  - Replication Features
MySQL Manchester TT - Replication Features
 
MySQL 5.6, news in 5.7 and our HA options
MySQL 5.6, news in 5.7 and our HA optionsMySQL 5.6, news in 5.7 and our HA options
MySQL 5.6, news in 5.7 and our HA options
 
MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)
 
MySQL Tech Tour 2015 - 5.7 Connector/J/Net
MySQL Tech Tour 2015 - 5.7 Connector/J/NetMySQL Tech Tour 2015 - 5.7 Connector/J/Net
MySQL Tech Tour 2015 - 5.7 Connector/J/Net
 
01 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv101 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv1
 
TWJUG August, What's new in MySQL 5.7 RC
TWJUG August, What's new in MySQL 5.7 RCTWJUG August, What's new in MySQL 5.7 RC
TWJUG August, What's new in MySQL 5.7 RC
 
MySQL for Software-as-a-Service (SaaS)
MySQL for Software-as-a-Service (SaaS)MySQL for Software-as-a-Service (SaaS)
MySQL for Software-as-a-Service (SaaS)
 
MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015
 
devops Days Belgium Ghent 2016
devops Days Belgium Ghent 2016devops Days Belgium Ghent 2016
devops Days Belgium Ghent 2016
 
TWJUG August, MySQL JDBC Driver "Connector/J"
TWJUG August, MySQL JDBC Driver "Connector/J"TWJUG August, MySQL JDBC Driver "Connector/J"
TWJUG August, MySQL JDBC Driver "Connector/J"
 
MySQL Security
MySQL SecurityMySQL Security
MySQL Security
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
 

Semelhante a NoSQL no MySQL 5.7

MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...Dave Stokes
 
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...GeneXus
 
FOSDEM 2015 - NoSQL and SQL the best of both worlds
FOSDEM 2015 - NoSQL and SQL the best of both worldsFOSDEM 2015 - NoSQL and SQL the best of both worlds
FOSDEM 2015 - NoSQL and SQL the best of both worldsAndrew Morgan
 
MySQL 8.0 - What's New ?
MySQL 8.0 - What's New ?MySQL 8.0 - What's New ?
MySQL 8.0 - What's New ?Olivier DASINI
 
MySQL as a Document Store
MySQL as a Document StoreMySQL as a Document Store
MySQL as a Document StoreTed Wennmark
 
MySQL 5.7 -- SCaLE Feb 2014
MySQL 5.7 -- SCaLE Feb 2014MySQL 5.7 -- SCaLE Feb 2014
MySQL 5.7 -- SCaLE Feb 2014Dave Stokes
 
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014Dave Stokes
 
MySQL Manchester TT - Performance Tuning
MySQL Manchester TT  - Performance TuningMySQL Manchester TT  - Performance Tuning
MySQL Manchester TT - Performance TuningMark Swarbrick
 
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015 2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015 Geir Høydalsvik
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAsBen Krug
 
Pl17: MySQL 8.0: security
Pl17: MySQL 8.0: securityPl17: MySQL 8.0: security
Pl17: MySQL 8.0: securityGeorgi Kodinov
 
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.Geir Høydalsvik
 
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.Cloud Native Day Tel Aviv
 
MySQL Shell: The DevOps Tool for MySQL
MySQL Shell: The DevOps Tool for MySQLMySQL Shell: The DevOps Tool for MySQL
MySQL Shell: The DevOps Tool for MySQLMiguel Araújo
 
NoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSONNoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSONMario Beck
 
20141011 my sql clusterv01pptx
20141011 my sql clusterv01pptx20141011 my sql clusterv01pptx
20141011 my sql clusterv01pptxIvan Ma
 
제3회난공불락 오픈소스 인프라세미나 - MySQL
제3회난공불락 오픈소스 인프라세미나 - MySQL제3회난공불락 오픈소스 인프라세미나 - MySQL
제3회난공불락 오픈소스 인프라세미나 - MySQLTommy Lee
 
The Real Scoop on Migrating from Oracle Databases
The Real Scoop on Migrating from Oracle DatabasesThe Real Scoop on Migrating from Oracle Databases
The Real Scoop on Migrating from Oracle DatabasesEDB
 
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...Geir Høydalsvik
 
Oracle database 12c_and_DevOps
Oracle database 12c_and_DevOpsOracle database 12c_and_DevOps
Oracle database 12c_and_DevOpsMaria Colgan
 

Semelhante a NoSQL no MySQL 5.7 (20)

MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
 
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
 
FOSDEM 2015 - NoSQL and SQL the best of both worlds
FOSDEM 2015 - NoSQL and SQL the best of both worldsFOSDEM 2015 - NoSQL and SQL the best of both worlds
FOSDEM 2015 - NoSQL and SQL the best of both worlds
 
MySQL 8.0 - What's New ?
MySQL 8.0 - What's New ?MySQL 8.0 - What's New ?
MySQL 8.0 - What's New ?
 
MySQL as a Document Store
MySQL as a Document StoreMySQL as a Document Store
MySQL as a Document Store
 
MySQL 5.7 -- SCaLE Feb 2014
MySQL 5.7 -- SCaLE Feb 2014MySQL 5.7 -- SCaLE Feb 2014
MySQL 5.7 -- SCaLE Feb 2014
 
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
 
MySQL Manchester TT - Performance Tuning
MySQL Manchester TT  - Performance TuningMySQL Manchester TT  - Performance Tuning
MySQL Manchester TT - Performance Tuning
 
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015 2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAs
 
Pl17: MySQL 8.0: security
Pl17: MySQL 8.0: securityPl17: MySQL 8.0: security
Pl17: MySQL 8.0: security
 
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
 
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
MySQL Shell: the daily tool for devs and admins. By Vittorio Cioe.
 
MySQL Shell: The DevOps Tool for MySQL
MySQL Shell: The DevOps Tool for MySQLMySQL Shell: The DevOps Tool for MySQL
MySQL Shell: The DevOps Tool for MySQL
 
NoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSONNoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSON
 
20141011 my sql clusterv01pptx
20141011 my sql clusterv01pptx20141011 my sql clusterv01pptx
20141011 my sql clusterv01pptx
 
제3회난공불락 오픈소스 인프라세미나 - MySQL
제3회난공불락 오픈소스 인프라세미나 - MySQL제3회난공불락 오픈소스 인프라세미나 - MySQL
제3회난공불락 오픈소스 인프라세미나 - MySQL
 
The Real Scoop on Migrating from Oracle Databases
The Real Scoop on Migrating from Oracle DatabasesThe Real Scoop on Migrating from Oracle Databases
The Real Scoop on Migrating from Oracle Databases
 
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
2018: State of the Dolphin, MySQL Keynote at Percona Live Europe 2018, Frankf...
 
Oracle database 12c_and_DevOps
Oracle database 12c_and_DevOpsOracle database 12c_and_DevOps
Oracle database 12c_and_DevOps
 

Mais de MySQL Brasil

MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL Brasil
 
MySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL Brasil
 
Alta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseAlta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseMySQL Brasil
 
MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Brasil
 
Segurança no MySQL
Segurança no MySQLSegurança no MySQL
Segurança no MySQLMySQL Brasil
 
Alta disponibilidade no MySQL 5.7 GUOB 2016
Alta disponibilidade no MySQL 5.7 GUOB 2016Alta disponibilidade no MySQL 5.7 GUOB 2016
Alta disponibilidade no MySQL 5.7 GUOB 2016MySQL Brasil
 
Alta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHPAlta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHPMySQL Brasil
 
Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15MySQL Brasil
 
Estratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQLEstratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQLMySQL Brasil
 
Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15MySQL Brasil
 
Serviços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaServiços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaMySQL Brasil
 
MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL Brasil
 
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...MySQL Brasil
 
Desenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLDesenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLMySQL Brasil
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014MySQL Brasil
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014MySQL Brasil
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL Brasil
 
Alta-disponibilidade com MySQL
Alta-disponibilidade com MySQLAlta-disponibilidade com MySQL
Alta-disponibilidade com MySQLMySQL Brasil
 
MySQL Enterprise Edition Portfolio
MySQL Enterprise Edition PortfolioMySQL Enterprise Edition Portfolio
MySQL Enterprise Edition PortfolioMySQL Brasil
 

Mais de MySQL Brasil (20)

MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017
 
MySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e Uber
 
MySQL 8.0.1 DMR
MySQL 8.0.1 DMRMySQL 8.0.1 DMR
MySQL 8.0.1 DMR
 
Alta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseAlta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL Enterprise
 
MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17
 
Segurança no MySQL
Segurança no MySQLSegurança no MySQL
Segurança no MySQL
 
Alta disponibilidade no MySQL 5.7 GUOB 2016
Alta disponibilidade no MySQL 5.7 GUOB 2016Alta disponibilidade no MySQL 5.7 GUOB 2016
Alta disponibilidade no MySQL 5.7 GUOB 2016
 
Alta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHPAlta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHP
 
Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15
 
Estratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQLEstratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQL
 
Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15
 
Serviços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaServiços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e Java
 
MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15
 
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
 
Desenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLDesenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQL
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de Produto
 
Alta-disponibilidade com MySQL
Alta-disponibilidade com MySQLAlta-disponibilidade com MySQL
Alta-disponibilidade com MySQL
 
MySQL Enterprise Edition Portfolio
MySQL Enterprise Edition PortfolioMySQL Enterprise Edition Portfolio
MySQL Enterprise Edition Portfolio
 

Último

The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 

Último (20)

The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 

NoSQL no MySQL 5.7

  • 1. NoSQL em um mundo SQL Airton Lastori airton.lastori@oracle.com Abril-2016
  • 2. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | DBA Dev Gerencial Quem?
  • 3. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Nunca usou NoSQL Usa NoSQL apenas em apps não- críticas NoSQL em apps críticas Quem?
  • 4. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Agenda 1. NoSQL? 2. Uso do relacional como não-relacional 3. NewSQL
  • 5. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | NoSQL? uma breve introdução
  • 6. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted 6 NoSQL = Não-relacional
  • 7. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Modelo Relacional • Edgard F. Codd –1970, IBM –Turing Award 1981 • Forte base teórica matemática –teoria dos conjuntos, lógica de predicados, etc. • Implementada como SQL Oracle Confidential – Internal/Restricted/Highly Restricted 7 The relational model for database management: version 2
  • 8. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted 8 SQL = implementação do modelo relacional
  • 9. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Sistemas Gerenciadores de Bancos de Dados Relacionais • Software para gerenciar dados baseados no Modelo Relacional • Estrutura lógica dos dados – visão do usuário – Dados organizados em tabelas compostas de linhas e colunas e possuem regras de relacionamento entre sí (constraints) • Conhecidos como Dados Estruturados – SQL permite criar, manter e consultar os dados nestas estruturas – Normalização e Constraints evitam duplicidade da informação, aumentando consistência e qualidade dos dados – propriedades ACID (suporte a transações) • Estrutura física dos dados – visão da máquina – Árvores B*Tree = buscas muito rápidas O(log n) Oracle Confidential – Internal/Restricted/Highly Restricted 9
  • 10. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Vários modelos de dados • O modelo relacional não resolve bem todos os problemas • 1960 - navigacional – Hierárquico – Network • 1970 - SQL/relacional • 1990 - Orientado a Objetos – em parte, absorvido pelos SGBDRs • 2000 – NoSQL – será absorvido pelos SGBDRs? Apenas um Hype? Oracle Confidential – Internal/Restricted/Highly Restricted 11
  • 11. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | A Web Oracle Confidential – Internal/Restricted/Highly Restricted 12 Dados massivos, problemas Big Data Altíssima escala Sempre online Estratégia: hardwares commodity em nuvem + software livre Modelo relacional: difícil escalar e implementar alta disponibilidade em nuvem de hw commodity www.leavcom.com/pdf/NoSQL.pdf
  • 12. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Standalone Clusterizado Oracle Confidential – Internal/Restricted/Highly Restricted 13 Problemas diferentes
  • 13. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Problemas em ambientes clusterizados • Quando os dados estão normalizados e distribuídos, é difícil manter a performance • Quando os dados estão distribuídos, é difícil manter a consistência e implementar transações • Quando o dado está distribuído em hw commodity, é preciso ter duplicidade e sincronização para tolerância a falhas • Etc. Que tal abrir mão de algumas coisas do modelo relacional em prol de outras? Oracle Confidential – Internal/Restricted/Highly Restricted 14
  • 14. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted 15 Web = gatilho para o surgimento das tecnologias NoSQL
  • 15. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 16 http://db-engines.com/en/ranking_categories 183NoSQL 12categorias
  • 16. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Características comuns • Alta Performance – Normalmente um banco NoSQL é muito rápido, pois possui uma arquitetura simplificada • Evita operações de JOINs – armazenando dados duplicados e denormalizados • Projetado para escalar Horizontalmente – Lembra da Cloud Computing? Pois é... • Normalmente abre-se mão de funcionalidades em prol da simplicidade de uso, inclusive em escala Oracle Confidential – Internal/Restricted/Highly Restricted 17
  • 17. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Schemaless • key-value • document • wide column • graph • Etc • Muda o modelo lógico, a visão do usuário – Outras APIs de acesso = Not Only SQL – Em muitos casos, simplifica a vida do desenvolvedor (do DBA, nem tanto...) Oracle Confidential – Internal/Restricted/Highly Restricted 18
  • 18. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted 19 Computação acessível via clouds públicas, software livre e simplicidade no uso tornam o movimento NoSQL muito relevante
  • 19. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 20 http://db-engines.com/en/ranking_trend (mar-2016)
  • 20. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Uso do relacional como não-relacional casos de sucesso da web
  • 21. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Grandes usuários MySQL 23 Web, Cloud, Distribuído e Embarcado…
  • 22. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted 24 Muitas foram start ups há poucos anos, começaram e cresceram com MySQL
  • 23. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Usa MySQL como NoSQL eng.uber.com/schemaless-part-one
  • 24. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Usa MySQL como NoSQL eng.uber.com/schemaless-part-one • Our new solution needed to be able to linearly add capacity by adding more servers • We needed write availability – substituir Redis como data pipeline em busca de consistência de leitura sem abrir mão da performance de escrita • We needed secondary indexes – saindo do Postgres, mas mantendo a mesma funcionalidade • We needed operation trust in the system, as it contains mission-critical trip data • We needed a way of notifying downstream dependencies – múltiplos processos (billing, analytics) inter-dependentes, mas que precisam ser isolados para escalar e sem perdas •
  • 25. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Usa MySQL como NoSQL eng.uber.com/schemaless-part-one
  • 26. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Usa MySQL como NoSQL eng.uber.com/schemaless-part-one
  • 27. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | “We had an unexpected loss of data on nearly every technology we used at one time or another, except MySQL.” – Pinterest Engineering Oracle Confidential – Internal/Restricted/Highly Restricted 29
  • 28. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | NewSQL o mundo relacional abraça o NoSQL
  • 29. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Suporte ao modelo chave-valor • Memcached plug-in Oracle Confidential – Internal/Restricted/Highly Restricted 31
  • 30. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | MySQL 5.7 Sysbench Benchmark: SQL Point Selects 3x Faster than MySQL 5.6 1,600,000 QPS 0 200,000 400,000 600,000 800,000 1,000,000 1,200,000 1,400,000 1,600,000 1,800,000 8 16 32 64 128 256 512 1,024 QueriesperSecond Connections MySQL 5.7: Sysbench OLTP Read Only (SQL Point Selects) MySQL 5.7 MySQL 5.6 MySQL 5.5 Intel(R) Xeon(R) CPU E7-8890 v3 4 sockets x 18 cores-HT (144 CPU threads) 2.5 Ghz, 512GB RAM Linux kernel 3.16 32
  • 31. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Suporte ao modelo orientado a documentos no MySQL 5.7 1. Native JSON datatype 2. JSON Functions 3. Generated Columns 33
  • 32. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Tipo nativo JSON 34 CREATE TABLE employees (data JSON); INSERT INTO employees VALUES ('{"id": 1, "name": "Jane"}'); INSERT INTO employees VALUES ('{"id": 2, "name": "Joe"}'); SELECT * FROM employees; +---------------------------+ | data | +---------------------------+ | {"id": 1, "name": "Jane"} | | {"id": 2, "name": "Joe"} | +---------------------------+ 2 rows in set (0,00 sec)
  • 33. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Vantagens sobre tipos TEXT/VARCHAR 1. Document Validation: 2. Eficiência no armazenamento físico Allows quicker access to object members and array elements because its optimized binary format 37 INSERT INTO employees VALUES ('some random text'); ERROR 3130 (22032): Invalid JSON text: "Expect a value here." at position 0 in value (or column) 'some random text'.
  • 34. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | JSON Functions 38 SET @document = '[10, 20, [30, 40]]'; SELECT JSON_EXTRACT(@document, '$[1]'); +---------------------------------+ | JSON_EXTRACT(@document, '$[1]') | +---------------------------------+ | 20 | +---------------------------------+ 1 row in set (0.01 sec)
  • 35. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Testes com dados reais • Via SF OpenData • 206K JSON objects representing subdivision parcels. • Imported from https://github.com/zemirco/sf-city-lots-json + small tweaks 39 CREATE TABLE features ( id INT NOT NULL auto_increment primary key, feature JSON NOT NULL );
  • 36. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 40 { "type":"Feature", "geometry":{ "type":"Polygon", "coordinates":[ [ [-122.42200352825247,37.80848009696725,0], [-122.42207601332528,37.808835019815085,0], [-122.42110217434865,37.808803534992904,0], [-122.42106256906727,37.80860105681814,0], [-122.42200352825247,37.80848009696725,0] ] ] }, "properties":{ "TO_ST":"0", "BLKLOT":"0001001", "STREET":"UNKNOWN", "FROM_ST":"0", "LOT_NUM":"001", "ST_TYPE":null, "ODD_EVEN":"E", "BLOCK_NUM":"0001", "MAPBLKLOT":"0001001" } }
  • 37. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Naive Performance Comparison 41 # as JSON type SELECT DISTINCT feature->"$.type" as json_extract FROM features; +--------------+ | json_extract | +--------------+ | "Feature" | +--------------+ 1 row in set (1.25 sec) Unindexed traversal of 206K documents # as TEXT type SELECT DISTINCT feature->"$.type" as json_extract FROM features; +--------------+ | json_extract | +--------------+ | "Feature" | +--------------+ 1 row in set (12.85 sec) Explanation: Binary format of JSON type is very efficient at searching. Storing as TEXT performs over 10x worse at traversal. Using short cut for JSON_EXTRACT. Coming in 5.7.9.
  • 38. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Generated Columns 42 id my_integer my_integer_plus_one 1 10 11 2 20 21 3 30 31 4 40 41 CREATE TABLE t1 ( id INT NOT NULL PRIMARY KEY auto_increment, my_integer INT, my_integer_plus_one INT AS (my_integer+1) ); UPDATE t1 SET my_integer_plus_one = 10 WHERE id = 1; ERROR 3105 (HY000): The value specified for generated column 'my_integer_plus_one' in table 't1' is not allowed. Column automatically maintained based on your specification. Read-only of course
  • 39. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Generated Columns Support Indexes! 43 ALTER TABLE features ADD feature_type VARCHAR(30) AS (feature->"$.type"); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 ALTER TABLE features ADD INDEX (feature_type); Query OK, 0 rows affected (0.73 sec) Records: 0 Duplicates: 0 Warnings: 0 SELECT DISTINCT feature_type FROM features; +--------------+ | feature_type | +--------------+ | "Feature" | +--------------+ 1 row in set (0.06 sec) From table scan on 206K documents to index scan on 206K materialized values Down from 1.25 sec to 0.06 sec Creates index only. Does not modify table rows. Meta data change only (FAST). Does not need to touch table.
  • 40. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Generated Columns (cont.) • Used for “functional index” • Available as either VIRTUAL (default) or STORED: • Both types of computed columns permit for indexes to be added. 44 ALTER TABLE features ADD feature_type varchar(30) AS (feature- >"$.type") STORED; Query OK, 206560 rows affected (4.70 sec) Records: 206560 Duplicates: 0 Warnings: 0
  • 41. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Indexing Options Available 45 STORED VIRTUAL Primary and Secondary BTREE, Fulltext, GIS Mixed with fields Requires table rebuild Not Online Secondary Only BTREE Only Mixed with fields No table rebuild INSTANT Alter Faster Insert Bottom Line: Unless you need a PRIMARY KEY, FULLTEXT or GIS index VIRTUAL is probably better.
  • 42. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Virtual vs. Stored Performance • Approximate worst case scenario via a table scan: 46 SELECT DISTINCT feature_type FROM features; +--------------+ | feature_type | +--------------+ | "Feature" | +--------------+ VIRTUAL-TEXT (9.89 sec) STORED-TEXT (0.22 sec) VIRTUAL-JSON (0.85 sec) STORED-JSON (0.24 sec) Clarification: Since indexes are materialized (stored) themselves, the real-life case for STORED is when generating the column is computationally expensive and you can not use indexes effectively.
  • 43. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Unquote JSON String SELECT DISTINCT JSON_UNQUOTE(feature->"$.type") as feature_type FROM features; +-----------------+ | feature_type | +-----------------+ | Feature | +-----------------+ 1 row in set (1.22 sec) 47
  • 44. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | JSON Path Search • Provides a novice way to know the path. To retrieve via: [[database.]table.]column->"$<path spec>" 48 SELECT JSON_SEARCH(feature, 'one', 'MARKET') AS extract_path FROM features WHERE id = 121254; +-----------------------+ | extract_path | +-----------------------+ | "$.properties.STREET" | +-----------------------+ 1 row in set (0.00 sec) SELECT feature->"$.properties.STREET" AS property_street FROM features WHERE id = 121254; +-----------------+ | property_street | +-----------------+ | "MARKET" | +-----------------+ 1 row in set (0.00 sec)
  • 45. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | JSON Array Creation 49 SELECT JSON_ARRAY(id, feature->"$.properties.STREET", feature->'$.type") AS json_array FROM features ORDER BY RAND() LIMIT 3; +-------------------------------+ | json_array | +-------------------------------+ | [65298, "10TH", "Feature"] | | [122985, "08TH", "Feature"] | | [172884, "CURTIS", "Feature"] | +-------------------------------+ 3 rows in set (2.66 sec)
  • 46. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | JSON Object Creation 50 SELECT JSON_OBJECT('id', id, 'street', feature->"$.properties.STREET", 'type', feature->"$.type" ) AS json_object FROM features ORDER BY RAND() LIMIT 3; +--------------------------------------------------------+ | json_object | +--------------------------------------------------------+ | {"id": 122976, "type": "Feature", "street": "RAUSCH"} | | {"id": 148698, "type": "Feature", "street": "WALLACE"} | | {"id": 45214, "type": "Feature", "street": "HAIGHT"} | +--------------------------------------------------------+ 3 rows in set (3.11 sec)
  • 47. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | JSON_REPLACE 51 SELECT JSON_REPLACE(feature, '$.type', JSON_ARRAY('feature', 'bug')) as json_object FROM features LIMIT 1; +--------------------------------------------------------+ | json_object | +--------------------------------------------------------+ | {"type": ["feature", "bug"], "geometry": {"type": ..}} | +--------------------------------------------------------+
  • 48. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | • 5.7 supports functions to CREATE, SEARCH, MODIFY and RETURN JSON values: JSON Functions 52 JSON_ARRAY_APPEND() JSON_ARRAY_INSERT() JSON_ARRAY() JSON_CONTAINS_PATH() JSON_CONTAINS() JSON_DEPTH() JSON_EXTRACT() JSON_INSERT() JSON_KEYS() JSON_LENGTH() JSON_MERGE() JSON_OBJECT() JSON_QUOTE() JSON_REMOVE() JSON_REPLACE() JSON_SEARCH() JSON_SET() JSON_TYPE() JSON_UNQUOTE() JSON_VALID() https://dev.mysql.com/doc/refman/5.7/en/json-functions.html
  • 49. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | JSON Comparator 53 SELECT CAST(1 AS JSON) = 1; +---------------------+ | CAST(1 AS JSON) = 1 | +---------------------+ | 1 | +---------------------+ 1 row in set (0.01 sec) JSON value of 1 equals 1
  • 50. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | JSON ou Coluna? • Você escolhe • Vantagens em ambas abordagens 54
  • 51. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Storing as a Column • Easier to apply a schema to your application • Schema may make applications easier to maintain over time, as change is controlled; • Do not have to expect as many permutations • Allows some constraints over data 55
  • 52. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Storing as JSON • More flexible way to represent data that is hard to model in schema; • Imagine you are a SaaS application serving many customers • Strong use-case to support custom-fields • Historically this may have used Entity–attribute–value model (EAV). Does not always perform well 56
  • 53. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | JSON (cont.) • Easier denormalization; an optimization that is important in some specific situations • No painful schema changes* • Easier prototyping • Fewer types to consider • No enforced schema, start storing values immediately 57 * MySQL 5.6 has Online DDL. This is not as large of an issue as it was historically.
  • 54. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Schema + Schemaless 58 SSDs have capacity_in_gb, CPUs have a core_count. These attributes are not consistent across products. CREATE TABLE pc_components ( id INT NOT NULL PRIMARY KEY, description VARCHAR(60) NOT NULL, vendor VARCHAR(30) NOT NULL, serial_number VARCHAR(30) NOT NULL, attributes JSON NOT NULL );
  • 55. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Sumário 1. O movimento NoSQL é de grande relevância e têm os gigantes da Web como protagonistas 2. NoSQL complementa Bancos Relacionais 3. NewSQL = combinando os dois mundos 4. MySQL continua muito relevante na Web 5. Memcached plugin e JSON são exemplos no MySQL de como bancos relacionais podem abraçar o NoSQL
  • 56. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Obrigado! Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 57. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | @MySQLBR meetup.com/MySQL-BRfacebook.com/MySQLBR pt.planet.mysql.com
  • 58. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Perguntas? NoSQL em um mundo SQL Contato: airton.lastori@oracle.com twitter.com/mysqlbr facebook.com/mysqlbr