TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Análise do Banco de Dados Mongo

Por:   •  21/5/2021  •  Seminário  •  2.449 Palavras (10 Páginas)  •  104 Visualizações

Página 1 de 10

Disciplina: Sistemas de Bancos de Dados

Entrega Atividade 2020a Etapa 2

Banco de Dados Etapa 1: PostgreSQL (para comparativo)

Banco de Dados Etapa 2: MongoDB

        Um pouco sobre o MongoDB:

        O mongo DB é um banco de dados não relacional criado pela empresa 10Gen em 2009, na linguagem C++, que é multiplataforma e de código aberto, sendo esse um banco Orientado a Documentos.

        Atualmente é o banco não relacional mais famoso, o 4º mais amado pelos programadores e o mais procurado nas plataformas de pesquisa (dados segundo uma pesquisa do StackOverflow)

Modelo ER:

Vamos agora demonstrar o banco do PostgreSQL, e após o banco de dados do MongoDB, para fins comparativos de como ficou a estrutura:

PostgreSQL:

[pic 1]

MongoDB: (versão migrada do PostgreSQL acima)

[pic 2]

Vale destacar:

Cada valor em ‘Movies’ era uma tabela de junção (N para N) que foi “embutida” dentro de ‘Movies’ para facilitar as futuras consultas e demonstrar resultados otimizados.

Para a migração:

        A conversão foi feita com um script feito em Python, demonstrado a seguir, que selecionou os dados do PostgreSQL e os passou para o MongoDB.

        A estratégia que utilizamos para conversão foi deixar os registros todos diretamente como atributos da então collection ‘Movies’ e os mais complexos (que não eram simples N para N) como outras collections.

        Sendo assim, foram eliminadas tabelas (collections) intermediárias como ‘movies_keywords’ e ‘movies_genres’.

Script de migração dos dados:

from pymongo import MongoClient

from pgdb import connect

mongo = MongoClient('localhost', 27017)

pg = connect(host='localhost', port=5433, dbname='the_movies_dataset', user='postgres', password='postgres')

def get_actors():

    actors = pg.execute('''

        select acto.order_id

        ,      pers.name

        ,      pers.id person_id

        ,      acto.movie_id

        ,      acto.id

        from   actors acto inner join persons pers

            on acto.person_id = pers.id

    ''').fetchall()

    mongo_actors = {}

    movie_actors = {}

    for actor in actors:

        mongo_actors[actor.person_id] = {

            'name': actor.name,

            'order_id': actor.order_id

        }

        movie_actors[actor.movie_id] = (movie_actors.get(actor.movie_id) or set())

        movie_actors[actor.movie_id].add(actor.person_id)

    return movie_actors, mongo_actors

def get_countries():

    countries = pg.execute('''

        select coun.name

        ,      coun.code

        ,      coun.id country_id

        ,      prco.movie_id

        ,      prco.id

        from   production_countries prco inner join countries coun

            on prco.country_id = coun.id

    ''').fetchall()

    mongo_countries = {}

    production_countries = {}

    for country in countries:

        mongo_countries[country.country_id] = {

            'name': country.name,

            'code': country.code

        }

        production_countries[country.movie_id] = (production_countries.get(country.movie_id) or set())

        production_countries[country.movie_id].add(country.country_id)

    return production_countries, mongo_countries

def get_languages():

    languages = pg.execute('''

        select lang.lang_key

        ,      lang.name

        ,      lang.id language_id

        ,      spla.movie_id

        ,      spla.id

        from   spoken_languages spla inner join languages lang

            on spla.language_id = lang.id

    ''').fetchall()

    mongo_languages = {}

    movie_languages = {}

    for language in languages:

        movie_languages[language.movie_id] = (movie_languages.get(language.movie_id) or set())

        movie_languages[language.movie_id].add(language.language_id)

    all_languages = pg.execute('''

        select lang.lang_key

        ,      lang.name

        ,      lang.id language_id

        from   languages lang

    ''').fetchall()

    for language in all_languages:

        mongo_languages[language.language_id] = {

            'lang_key': language.lang_key,

            'name': language.name

        }

    return movie_languages, mongo_languages

def get_genres():

    genres = pg.execute('''

        select genr.name

        ,      moge.movie_id

        from   movies_genres moge inner join genres genr

            on moge.genre_id = genr.id

    ''').fetchall()

    movie_genres = {}

    for genre in genres:

        movie_genres[genre.movie_id] = (movie_genres.get(genre.movie_id) or [])

...

Baixar como (para membros premium)  txt (12.5 Kb)   pdf (836.8 Kb)   docx (785.7 Kb)  
Continuar por mais 9 páginas »
Disponível apenas no TrabalhosGratuitos.com