+ All Categories
Home > Technology > Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Date post: 02-Dec-2014
Category:
Upload: oracle-espana
View: 257 times
Download: 1 times
Share this document with a friend
Description:
En poco tiempo NoSQL se ha convertido en uno de los tópicos de moda para el tratamiento de la inofrmación en entornos Web, móviles y de la Internet de las cosas lo que ha ocasionado la creación de un nuevo segmento de software, las bases de datos NoSQL, con muchos fabricantes, arquitecturas y funcionalidades muy diversas.
Popular Tags:
81
NoSQL [ { ‘nombre’: ‘Sergio Rodríguez de Guzmán’, ‘email’: ‘[email protected]’, ‘departamento’: ‘formación’ } ]
Transcript
Page 1: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

NoSQL

[ {‘nombre’: ‘Sergio Rodríguez de Guzmán’,‘email’: ‘[email protected]’,‘departamento’: ‘formación’

} ]

Page 2: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

LÍNEAS DE NEGOCIOLÍNEAS DE NEGOCIO

FORMACIÓN IT DESARROLLO PRODUCTOCONSULTORÍA GESTIÓN DE IDENTIDAD Y ACCESOS

BIG DATA

Centro de Formación oficial de IT.

Acuerdos con Cloudera, Oracle, MongoDB, Apple, IBM, Vmware, Microsoft, Red Hat, Cisco…

Presencial, Virtual, Online

Personalización por proyecto

Consultoría, Integración y Soporte.

Tecnologías Oracle, Microsoft, Red Hat, ForgeRock, OWS2, Opensource…

Soporte 24x7, Proyectos Llave en mano

Expertos Big Data desde 2011

Acuerdos con Cloudera, Oracle, MongoDB,

Paquetes de servicios predefinidos en ETL, Arquitectura, Seguridad, Analíticas Descriptivas y Certificación de Producción

Soluciones de Gestión de Identidad y Accesos.

Tecnologías Oracle, Microsoft, Red Hat, ForgeRock, OWS2, Opensource…

Soporte 24x7, Proyectos Llave en mano

Proyectos en MDM

Soluciones de Seguridad y Auditoría del CPD

Gestión y Actualización de parches Multivendor para el CPD

Desarrollo de Aplicaciones Móviles

Page 3: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

1980

1990

2000

2010

Rise of Relational

Page 4: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

PersistenceIntegration

SQLTransactions

Reporting

Page 5: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

IMPEDANCEMISMATCH

Page 6: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

1980

1990

2000

2010

Rise of objectDatabases

Page 7: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Billing

Inventory

Integration Database

Page 8: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

1980

1990

2000

2010

RelationalDominance

Page 9: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Lots of Traffic

Page 10: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

SQL SQL

Page 11: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

BigTable

Dynamo

Page 12: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

“NoSQL”

Page 13: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Johan Oskarsson

London

San Francisco

#nosql

Page 14: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Dynomite

Page 15: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Characteristics of NoSQL

Non-relationalOpen Source

Schema-less Cluster-friendly

21st Century Web

Page 16: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

DATA MODEL

Page 17: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

DOCUMENT

GRAPH

COLUMN

KEY-VALUENoSQL

Page 18: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

KEY-VALUE

10025

10026

10043

10048

Page 19: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

DOCUMENT{ "id": 1, "name": "A green door", "price": 12.50, "tags": ["home", "green"] }

{ "id": 1, "name": "A blue door", "price": 14.50, "tags": ["home", “blue"], “discount": true}

Noschema

Page 20: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

anOrder[“price”] * anOrder[“quantity”]

Implicitschema

Page 21: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

KEY-VALUE10025

10026

10043

DOCUMENT

{ "id": 1, "name": "A green door", "price": 12.50, "tags": ["home", "green"] }

{ "id": 1, "name": "A blue door", "price": 14.50, "tags": ["home", “blue"], “discount": true}

customer_id: 7231

metadatakey

Page 22: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Key-Value Document

Aggregate-Oriented

Page 23: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Aggregate

Page 24: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Order

Line Item

Page 25: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

KEY-VALUE10025

10026

10043

DOCUMENT

{ "id": 1, "name": "A green door", "price": 12.50, "tags": ["home", "green"] }

{ "id": 1, "name": "A blue door", "price": 14.50, "tags": ["home", “blue"], “discount": true}

Value == Aggregate Document == Aggregate

Page 26: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

COLUMN-FAMILY

1234

name “sergio”

billingAddress data…

payment data…

OR1001 data…

OR1002 data…

OR1003 data…

OR1004 data…row key

column family

column key column value

profile

orders

Page 27: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez
Page 28: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Order1001

aggregate

Page 29: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez
Page 30: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Product Revenue Prior revenue

321291233 3083 7043

343412758 5032 4782

131494408 2198 3187

… … …

… … …

… … …

… … …

Page 31: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Order

Line Item Product1

Page 32: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

DOCUMENT

GRAPH

COLUMN

KEY-VALUENoSQL

Page 33: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Aggregate-Oriented

DocumentColumn-Family

Key-valueGraph

Page 34: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Graph

Page 35: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

GraphBigCo

Sergio Lucia

Rocio Rosana

employee_of employee_of

friend

friend

START rocio = node:nodeIndex(name = “Rocio”) MATCH (rocio)-[:FRIEND]->(friend_node)RETURN friend_node.name,friend_node.location

friend

Page 36: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Aggregate-Oriented

DocumentColumn-Family

Key-valueGraph

Schemaless

Page 37: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

NOSQL AND CONSISTENCY

Page 38: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

RDBMS == ACID

NoSQL == BASE

Page 39: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez
Page 40: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Aggregate-Oriented

DocumentColumn-Family

Key-valueGraph

ACID

Page 41: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Browser Server Database

Page 42: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Get Get

Post

Post

Offline Lock

v101

v101 v101VersionStamp

v102

v101

Page 43: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Consistency

Logical

Replication

Page 44: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Lucia Sergio

Page 45: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Lucia Sergio

Page 46: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Lucia Sergio

Lucia Sergio

Consistency

Availability

Page 47: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

CAP Theorem

Consistency

AvailabilityPartitionTolerance

Pick any 2

Page 48: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Partition

Consistency

Availability

OR

Page 49: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Partition

Consistency

Availability

Page 50: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Consistency

Response Time

Page 51: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Safety

Liveness

Page 52: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

RelaxingDurabilityEventual

ConsistencyQuorums

Read-Your-WritesConsistency

Page 53: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez
Page 54: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

WHEN AND WHY TO USE NOSQL?

Page 55: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

easierdevelopment

large scale data

NoSQL

Page 56: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Billing

Inventory

IntegrationDatabase

Billing

Inventory

ApplicationDatabaseWebservice

API

Page 57: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

1980

1990

2000

2010

NoSQL?

Page 58: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

1980

1990

2000

2010

PolyglotPersistence

Page 59: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

User sessionsRedis

Financial DataRDBMS

Shopping CartRiak

RecommendationNeo4J

Product CatalogMongoDB

ReportingRDBMS

AnalyticsCassandra

User activity logsCassandra

Speculative Retailers Web Application

Page 60: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Problems

Decisions

Organizational Change

ImmaturityEventual Consistency

Page 61: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Strategic

Rapid time tomarket

Dataintensive

andand/or

Page 62: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Possible Use Cases• Use A NoSQL Database For A Particular Application

Feature• Use A NoSQL Database For Speedy Batch

Processing• Use A NoSQL Database For Distributed Logging• Use A NoSQL Database For Large Tables• Use A RDBMS For Reporting

Page 63: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

What's The Catch?• Difficult For Data In Different Databases To Interact• You Now Have To Decide Where To Store Data• Increased Application And Deployment Complexity• Additional Administrative Responsibilities• Training

Page 64: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

APIS

Page 65: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Java

NoSQL

Python

Javascript EktorpJrelaxCouchDB4J

Page 66: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Who Is Actually Doing This?

Page 67: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Twitter• Vertically and horizontally partitioned MySQL• Several layers of aggressive caching, all application managed• Schema changes impossible, resulting in the use of bitfields

and piggyback tables• Hardware intensive• Error prone• Hitting MySQL limits• Already eventually consistent

Page 68: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Twitter

FlockDB

Page 69: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Twitter• Migrating from MySQL to Cassandra as their main

online data store• Hadoop/HBase used for people search feature• FlockDB used to manage the social graph• Hadoop for analytics• “As with all NoSQL systems, strengths in different

situations” - Kevin Weil, Analytics Lead, Twitterhttp://www.slideshare.net/kevinweil/nosql-at-twitter-nosql-eu-2010

Page 70: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Twitter• Increased availability• The ability to support new features• The ability to analyze their massive amount of

data in a reasonable amount of time

http://www.slideshare.net/kevinweil/nosql-at-twitter-nosql-eu-2010

Page 71: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

NoSQL Job Trends

Page 72: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

NoSQL Job Growth by Project

Page 73: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

NoSQL Job Growth by Project (Relative)

Page 74: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

NOSQL + BIG DATA SIMPLE SAMPLEGrokking Twitter

Page 75: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Step by Step• Use/Install Hadoop NoSQL Plugin• Import tweets from twitter• Write mapper in Java/Python• Write reducer in Java/Python• Call myself a data scientist

Page 76: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Groking Twittercurl --get 'https://stream.twitter.com/1.1/statuses/sample.json' --header 'Authorization: OAuth oauth_consumer_key="OsITqnRiCTmkQcv4dtPPj3mnq", oauth_nonce="d41d45177ab9b450f7d1cb82b0d37328", oauth_signature="bOpdpvFNxPuqrlUV4nBhiyyGWbA%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1411988258", oauth_token="295079318-AbQu8sOPCaxXebjwDnDhOUjMST8bgs60JajOffMn", oauth_version="1.0"' --verbose | mongoimport –d test –c live

Page 77: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Map Hashtags in Python#!/usr/bin/env python

import syssys.path.append(".")

from pynosql_hadoop import BSONMapper

def mapper(documents): for doc in documents: for hashtag in doc['entities']['hashtags']: yield {'_id': hashtag['text'], 'count': 1}

BSONMapper(mapper)print >> sys.stderr, "Done Mapping."

Page 78: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Reduce Hashtags in Python#!/usr/bin/env python

import syssys.path.append(".")

from pynosql_hadoop import BSONReducer

def reducer(key, values): print >> sys.stderr, "Hashtag %s" % key.encode('utf8') _count = 0 for v in values: _count += v['count'] return {'_id': key.encode('utf8'), 'count': _count}

BSONReducer(reducer)

Page 79: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

All Together$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar -libjars /usr/lib/hadoop/lib/nosql-hadoop.jar,/usr/lib/hadoop/lib/nosql-hadoop-streaming-1.4.0-SNAPSHOT.jar -mapper /tmp/twit_hashtag_map.py -reducer /tmp/twit_hashtag_reduce.py -jobconf nosql.input.uri=nosqldb://127.0.0.1/test.live -inputformat com.nosqldb.hadoop.mapred.NoSQLInputFormat -jobconf nosql.output.uri=nosqldb://127.0.0.1/test.twit_reduction -outputformat com.nosqldb.hadoop.mapred.NoSQLOutputFormat -io nosqldb -input /tmp/in -output /tmp/out -file /tmp/twit_hashtag_map.py -file /tmp/twit_hashtag_reduce.py

Page 80: Estado del arte de las tecnologías NoSQL_Sergio Rodríguez

Popular Hashtagsdb.twit_hashtags.find().sort( {'count' : -1 }){ "_id" : "gameinsight", "count" : 1367 }{ "_id" : "رتويت", "count" : 1135 }{ "_id" : "넌감동이야 ", "count" : 796 }{ "_id" : "비투비 ", "count" : 778 }{ "_id" : " _ _ عنك_ غريبة معلومة { count" : 768" ,"ضع{ "_id" : "ريتويت", "count" : 757 }{ "_id" : " _ _ _ الواتساب_ قروبات في وظيفتك { count" : 748" ,"ماهي{ "_id" : "androidgames", "count" : 706 }{ "_id" : "android", "count" : 683 }{ "_id" : " _ _ الثنيان_ من احسن { count" : 680" ,"الفريدي


Recommended