Zaawansowany kurs języka Python



Podobne dokumenty
Kurs rozszerzony języka Python

Programowanie w Ruby

Definicja. Not Only SQL

Przetwarzanie danych z wykorzystaniem technologii NoSQL na przykładzie serwisu Serp24

Technologia informacyjna

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Język SQL, zajęcia nr 1

Architektura rozproszonych magazynów danych

Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

Programowanie w Ruby

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Programowanie obiektowe

Zaawansowany kurs języka Python

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Programowanie w Ruby

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Podstawy programowania III WYKŁAD 2

Nowe technologie baz danych

Wykład 5: PHP: praca z bazą danych MySQL

Podstawowe informacje o bazach danych. Technologie Informacyjne

Database Connectivity

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

NoSQL & relax with CouchDB

SQL 4 Structured Query Lenguage

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Hbase, Hive i BigSQL

CouchDB. Michał Nowikowski

Bazy danych - wykład wstępny

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Hurtownie danych wykład 5

Paweł Rajba

Programowanie w języku Java. Bazy danych SQLite w Javie

Programowanie obiektowe

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

znaleźć wszystkie rekordy dotyczące adresów przy ulicy Hożej (dowolnego miasta!);

PLNOG#10 Hadoop w akcji: analiza logów 1

Metody dostępu do danych

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Internetowe bazy danych

(kod ten służy wprowadzeniu definicji mediany, nie jest to optymalna ani nawet szczególnie dobra implementacja obliczania mediany w praktyce!

Baza danych. Modele danych

Wykład 05 Bazy danych

NARZĘDZIA WIZUALIZACJI

Bazy danych NoSQL. wprowadzenie. Szymon Francuzik Poznań,

akademia androida Składowanie danych część VI

Organizacyjnie. Prowadzący: dr Mariusz Rafało (hasło: BIG)

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

Paweł Cieśla. Dokumentacja projektu

Instalacja MySQL.

Wprowadzenie. Rozdział 23 PDO. Podstawowe kroki aplikacji. Źródło danych

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Administracja bazami danych

Współczesne systemy baz danych

Bazy danych i usługi sieciowe

Wprowadzenie do NoSql. Maksymilian Wiesiołek

Tworzenie baz danych i tabel

Tworzenie aplikacji bazodanowych

Bazy Danych i Usługi Sieciowe

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

ROZSZERZAJĄC FUNKCJONALNOŚCI MEMCACHED

Bazy danych. Dr inż. Paweł Kasprowski

Plan wykładu BAZY DANYCH II WYKŁAD 4. Co to jest kursor? Rodzaje kursorów

Programowanie obiektowe

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML

Projektowanie rozwiązań Big Data z wykorzystaniem Apache Hadoop & Family

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

JAVA I BAZY DANYCH. MATERIAŁY:

Internetowe bazy danych

na podstawie bazy Oracle NoSQL

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Bazy danych i usługi sieciowe

WPROWADZENIE DO BAZ DANYCH

Model semistrukturalny

Ćwiczenie IT13 Bazy danych SQL w InTouch-u

SQLAlchemy - Portale Internetowe

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

Administracja i programowanie pod Microsoft SQL Server 2000

(Apache) CouchDB. Krzysztof Kulewski 2008

Tworzenie aplikacji bazodanowych

Przestrzenne bazy danych. Definicja i cechy przestrzennych baz danych

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych

Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski. Poznań,

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Transkrypt:

DBM, SQL 10 listopada 2011

Rodzaje baz danych Trwałe słowniki Klient-serwer SQL Bekreley DB Gnu dbm (n)dbm Firebird Sqlite Oracle MySQL PostgeSQL DB/2

Plan wykładu 1 Bazy danych DBM 2 3 4 Grafowe bazy danych Bazy typu klucz wartość

Bazy danych typu DBM Database manager Dane przechowywane są w pliku, który przypomina słownik Dostęp do danych jest po kluczu Wartość zwykle może być tylko napisem Implementacja: zwykle tablice haszujące i b-drzewa Brak odrębnego serwera, dane pamiętane są w lokalnym pliku Szybkie!!!

Korzystanie z DBM db[ jeden ] = one db[ dwa ] = two if trzy in db: del db[ trzy ]

Korzystanie z DBM import <modul> db = <modul>.open( storage.dbm, c ) db[ jeden ] = one db[ dwa ] = two if trzy in db: del db[ trzy ] db.close()

Dostępne moduły Python 2.* Python 3.* Opis dumbdb dbm.dumb wolny, ale czysto Pythonowa implementacja bsddb (dbhash) implementacja Berkeley DB dbm dbm.ndbm interfejs uniksowej (n)dbm gdbm dbm.gnu rozszerzenie dbm

Przetwarzanie całej kolekcji for key in db.keys(): print(db[key])

Przetwarzanie całej kolekcji for key in db.keys(): print(db[key]) Ostrzeżenie Wymaga odczytu do pamięci całego pliku

Przetwarzanie kolekcji, dumbdbm for key in db: print( db[, key, ] =, db[key]) db.close()

Przetwarzanie kolekcji dbhash print db.first() while True: try: el = db.next() print el except KeyError: break gdbm k = db.firstkey() while k!= None: print k k = db.nextkey(k)

Dostępne moduły for in firstkey(), nextkey() first(), next() dumbdbm X (n)dbm gdbm X dbhash X

Jak sobie radzić w tym bałaganie Używać generycznego pakietu anydbm

Jak sobie radzić w tym bałaganie Używać generycznego pakietu anydbm Używać pakietu whichdbm: >>> import anydbm >>> whichdb.whichdb( plik.db )

Berkeley DB Gdzie można spotkać Berkeley DB OpenLDAP, Subversion, Spamassasin, KDevelop Właściwości: transakcje; replikacje; blokowanie rekordów; kluczami są liczby naturalne.

Plan wykładu 1 Bazy danych DBM 2 3 4 Grafowe bazy danych Bazy typu klucz wartość

A jak przechowywać obiekty Pakiet shelve pliki są słownikami przechowującymi pary (string, obiekt)

Pakiet shelve przykład import shelve db = shelve.open( dane.db ) db[ lista ] = [2,3,5,7,11] db.sync() del db[ obiekt ] db.close()

Plan wykładu 1 Bazy danych DBM 2 3 4 Grafowe bazy danych Bazy typu klucz wartość

Silniki SQL Bazy danych DBM Oracle DB/2 MySQL PostgreSQL MSSQL...

DB API Bazy danych DBM Python Database API Specification Zunifikowany interfejs dostępu do różnych systemów BD. Obecna wersja: 2.0.

Otwarcie połączenia z serwerem BD connect( parametry ) # zwraca obiekt Connection

Otwarcie połączenia z serwerem BD connect( parametry ) MySQL # zwraca obiekt Connection import MySQLdb db = MySQLdb.connect(host= localhost, db= testing, user= user, passwd= 123456 )

Zamknięcie połączenia db.close()

Komunikacja z bd wysłanie zapytania wynik = db.cursor() wynik.execute( SELECT * FROM Studenci )

Komunikacja z bd wysłanie zapytania wynik = db.cursor() wynik.execute( SELECT * FROM Studenci ) pobranie wyniku row = wynik.fetchone() while row: print row row = wynik.fetchone() Opcjonalnie wynik.close()

Wynik: obiekt klasy Cursor Atrybuty wyniku: description: opisuje kolumny rowcount: liczba przetworzonych wierszy (np. INSERT czy UPDATE)...

DB API: dodatkowe informacje Standardowe wyjątki: Warning, DatabaseError, NotSupportedError,...

SQLite Bazy danych DBM Plikowa baza danych, bez zewnętrznego serwera, żadnego kontaktu z adminem; moduł: sqlite3 Implementuje DB API 2.0 z rozszerzeniami

Użycie Sqlite Tworzenie tabeli import sqlite3 db = sqlite.connect( /tmp/temp.db ) kursor = db.cursor() kursor.execute( create table Library (Author text, Title text, publish year int, price real) ) db.commit()

Użycie Sqlite Wstawienie tabeli do wiersza kursor.execute( insert into Library values ( Shakespeare, Hamlet, 2003, 25.5) )

Użycie Sqlite Pobranie danych bd (rozszerzenie DB API 2.0) kursor.execute( SELECT * FROM Library ) for row in kursor: print(row)

Sqlite Bazy danych DBM Ciekawostka db = sqlite.connect( :memory: )

Plan wykładu Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość 1 Bazy danych DBM 2 3 4 Grafowe bazy danych Bazy typu klucz wartość

NoSQL Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość NOSQL (not only SQL) Systemy baz danych o elastycznej strukturze danych. Czasem mówi się że są to ustrukturalizowane zasoby.

NoSQL Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość NOSQL (not only SQL) Systemy baz danych o elastycznej strukturze danych. Czasem mówi się że są to ustrukturalizowane zasoby. Do czego się używa Proste, lecz wielkie bazy danych przetwarzane na wielu komputerach.

Grafowe bazy danych Bazy typu klucz wartość Dokument Dokument zawiera jakąś informację. Dokument może być w formacie XML, YAML, JSON, PDF, MS Office. Dokumenty nie muszą mieć jednego schematu.

Grafowe bazy danych Bazy typu klucz wartość Dokument Dokument zawiera jakąś informację. Dokument może być w formacie XML, YAML, JSON, PDF, MS Office. Dokumenty nie muszą mieć jednego schematu. Przykłady danych Imie= Adam Imie= Janina, Adres= ul. Cicha 132 m. 16, Dzieci=[ Staś, Krzyś ]

Inne cechy Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość Dokumenty mają unikatowe klucze (string, URI).

Inne cechy Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość Dokumenty mają unikatowe klucze (string, URI). Wyszukiwanie Wyszukiwanie oparte na kluczu lub zawartości.

Przykłady systemów Grafowe bazy danych Bazy typu klucz wartość CouchDB, MongoDB, Redis

MongoDB Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość System MongoDB system zorienowany na dokumenty; kolekcja: coś w rodzaju tabeli; nazwa modułu: pymongo; wymaga uruchomionego serwera mongod.

Połączenie z bd Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość from pymongo import Connection

Połączenie z bd Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość from pymongo import Connection connection = Connection()

Połączenie z bd Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość from pymongo import Connection connection = Connection() db = connection[ studenckie ]

Kolekcje Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość Pobranie kolekcji (leniwe) kolekcja = db[ protokoly ] # alternatywnie: kolekcja.protokoly

Dodanie elementu do kolekcji Grafowe bazy danych Bazy typu klucz wartość import datetime python prot = { prowadzacy :, przedmiot : Zaawansowany kurs Pythona, pracownie : [, Jan Otop ], data : datetime.datetime.utcnow()}

Dodanie elementu do kolekcji Grafowe bazy danych Bazy typu klucz wartość import datetime python prot = { prowadzacy :, przedmiot : Zaawansowany kurs Pythona, pracownie : [, Jan Otop ], data : datetime.datetime.utcnow()} kolekcja.insert(python prot) # Zwraca ObjectId(..)

Wyszukiwanie elementów Grafowe bazy danych Bazy typu klucz wartość for prot in kolekcja.find({ prowadzacy : }): # prot jest słownikiem

Grafowe bazy danych Grafowe bazy danych Bazy typu klucz wartość Dane są trzymane w postaci grafów: węzły reprezentują obiekty, a krawędzie: związki między obiektami.

Zastosowanie Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość Mapy, systemy geograficzne, dokumenty etc.

Baza danych typu klucz-wartość Grafowe bazy danych Bazy typu klucz wartość Implementacje BigTable (Google) Apache Hadoop (Facebook, Amazon, HP, IBM, Microsoft) BerkeleyDB dbm

MapReduce Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość Map Map( (klucz, wartość) ): przekształca każdą parę w listę par (kl, wart), a następnie łączy w grupy wartości związane z tym samym kluczem. Operacja jest wykonywana równolegle na każdej parze.

MapReduce Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość Map Map( (klucz, wartość) ): przekształca każdą parę w listę par (kl, wart), a następnie łączy w grupy wartości związane z tym samym kluczem. Operacja jest wykonywana równolegle na każdej parze. Reduce Reduce(kl, lista(wartości)): operacja wykonywana na każdej grupie i dająca w wyniku listę kolejnych wartości.

Przykład (Hadoop) Bazy danych DBM Grafowe bazy danych Bazy typu klucz wartość # zliczanie słów we wszystkich dokumentach from pydoop.pipes import Mapper, Reducer, Factory, runtask class WordCountMapper(Mapper): def map(self, context): words = context.getinputvalue().split() for w in words: context.emit(w, 1 ) class WordCountReducer(Reducer): def reduce(self, context): s = 0 while context.nextvalue(): s += int(context.getinputvalue()) context.emit(context.getinputkey(), str(s)) runtask(factory(wordcountmapper, WordCountReducer))

Grafowe bazy danych Bazy typu klucz wartość HDFS: Hadoop Distributed File System Rozproszony, skalowalny, przenośny, obsługujący replikację i wielkie pliki.