Coder Social home page Coder Social logo

mariagabrielareis / bdnr-mercado-livre Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 45 KB

Trabalho desenvolvido para a disciplina de Banco de Dados Não Relacional na FATEC de São José dos Campos: sistema para o mercado livre utilizando MongoDB, Redis e Cassandra :sparkles:

mongodb python redis cassandra nosql

bdnr-mercado-livre's Introduction

💸📦 Mercado Livre 📦💸

📑 Sobre o projeto

Este é um sistema que visa realizar opreações de CRUD a partir de um modelo de dados não relacional criado baseando-se nas transações do Mercado Livre (de maneira simplificada), assim servindo como prática de conexão com bancos de dados não relacionais como MongoDB, Redis e Cassandra.

  • 💡 Atividade 1: modelar de forma relacional e não relacional uma biblioteca e o mercado livre
  • 💡 Atividade 2: implementar as modelagens não relacionais da biblioteca e do mercado livre no MongoDB
  • 💡 Atividade 3: manipular documentos do MongoDB utilizando Python
  • 💡 Atividade 4: manipular documentos Chave-Valor no Redis utilizando Python
  • 💡 Atividade 5: manipular dados no Cassandra utilizando Python


🖥️ Demonstração

Abrindo cada um dos tópicos a seguir é possível observar as entregas feitas para cada atividade:

Atividade 1

O resultado desta atividade pode ser conferido através deste PDF

Atividade 2

O resultado desta atividade pode ser conferido através deste PDF

Atividade 3

A seguir é possível conferir prints do resultado das manipulações no MongoDB para cada documento criado (através do site https://www.mongodb.com/):

Usuário
Produto
Compra
Atividade 4

Para esta atividade 4, depois da criação de CRUD de usuários, produtos e compras, pensando na aplicabilidade do Redis e que em e-commerces eu, pessoalmente, utilizo muito da funcionalidade de lista de desejos, acabei agregando este recurso também a este projeto. Abaixo é possível ver o código que trás do MongoDB a lista de desejos de um determinado usuário (identificado pelo seu CPF) e cadastrando no Redis com o identificador wishlist:<CPF do usuário>.

def addWishlistToRedis(params):
  userCpf = params.get("userCpf")
  user = userCollection.find_one({ "cpf": userCpf })
  redis.set(f'wishlist:{userCpf}', user['wishlist'])

  return json.dumps({"status": "ok"}) 

Já no trecho abaixo é possível resgatar o que foi cadastrado no Redis, também necessitando da passagem do CPF do usuário por parâmetro para realização da busca:

def showRedisWishlist(params):
  userCpf = params.get("userCpf")  

  try:
    return json.loads(redis.get(f'wishlist:{userCpf}'))
  except:
    return json.dumps({"hasError": True, "Message": "Lista de desejos não encontrada!"})

E por fim, há também um recurso para deletar uma coleção do Redis se necessário:

def deleteWishlistFromRedis(params):
  userCpf = params.get("userCpf")
  redis.delete(f'wishlist:{userCpf}')

  return json.dumps({"status": "OK"}) 
Atividade 5

Para esta atividade 5, depois da criação de CRUD de usuários, produtos e compras utilizando Mongo e a criação da funcionalidade de lista de desejos com o Redis, agora é possível obter esses dados do Redis e cadastrá-los no Cassandra, consumindo as seguintes funções:

  • Para adicionar a lista de desejos ao Cassandra precisamos que o CPF do usuário dono da wishlist seja passado por parâmetro para a função, que vai buscar os dados no Redis e depois executar uma query para cadastrar tais dados no Cassandra:
def addWishlistToCassandra(params):
  userCpf = params.get("userCpf")
  redisWishlist = redis.get(f'wishlist:{userCpf}')

  cassandra.execute(f'INSERT INTO mercadolivre.wishlist (userCpf, products) VALUES ({userCpf}, {str(redisWishlist)})')

  return json.dumps({"status": "OK"})
  • Já no trecho abaixo é possível resgatar o que foi cadastrado no Cassandra, também necessitando da passagem do CPF do usuário por parâmetro para realização da busca:
def showCassandraWishlist(params):
  userCpf = params.get("userCpf")
  response = cassandra.execute(f'SELECT * FROM mercadolivre.wishlist WHERE userCpf = {userCpf}')
  
  if (not response):
    return json.dumps({"hasError": True, "Message": "Lista de desejos não encontrada!"})

  response = response[0]
  return json.dumps({
    "userCpf": response.userCpf,
    "products": json.dumps({response.products})
  })
  • E por fim, há também um recurso para deletar os dados cadastrados no Cassandra se necessário, também recorrendo ao uso do CPF do usuário:
def deleteWishlistFromCassandra(params):
  userCpf = params.get("userCpf")
  cassandra.execute(f'DELETE FROM mercadolivre.wishlist WHERE userCpf = {userCpf} IF EXISTS')

  return json.dumps({"status": "OK"}) 

image

bdnr-mercado-livre's People

Contributors

mariagabrielareis avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.