from MonetDB import * from PostgreSQL import * from datetime import datetime #Bilioteques nécessaires (pour se connecter a monetDB et postgreeSQL #pip install psycopg2 #pip install pymonetdb #Monet DB requeteSelect1MonetDB = """SELECT * FROM flights WHERE "AIRLINE" = 'AA';""" requeteSelect2MonetDB = """SELECT * FROM flights;""" requeteSelect5MonetDB = """SELECT * FROM flights WHERE "DAY" > 5;""" requeteSelect10MonetDB = """SELECT * FROM flights WHERE "DAY" > 10;""" requeteSelect15MonetDB = """SELECT * FROM flights WHERE "DAY" > 15;""" requeteSelect20MonetDB = """SELECT * FROM flights WHERE "DAY" > 20;""" requeteSelect25MonetDB = """SELECT * FROM flights WHERE "DAY" > 25;""" requeteSelect30MonetDB = """SELECT * FROM flights WHERE "DAY" > 30;""" requeteSelect5_2MonetDB = """SELECT * FROM flights WHERE "DAY" > 5 AND "SCHEDULED_DEPARTURE"=0030;""" requeteSelect10_2MonetDB = """SELECT * FROM flights WHERE "DAY" > 10 AND "SCHEDULED_DEPARTURE"=0030;""" requeteSelect15_2MonetDB = """SELECT * FROM flights WHERE "DAY" > 15 AND "SCHEDULED_DEPARTURE"=0030;""" requeteSelect20_2MonetDB = """SELECT * FROM flights WHERE "DAY" > 20 AND "SCHEDULED_DEPARTURE"=0030;""" requeteSelect25_2MonetDB = """SELECT * FROM flights WHERE "DAY" > 25 AND "SCHEDULED_DEPARTURE"=0030;""" requeteSelect30_2MonetDB = """SELECT * FROM flights WHERE "DAY" > 30 AND "SCHEDULED_DEPARTURE"=0030;""" requeteCreateTable10MonetDB = """CREATE TABLE flights10 AS SELECT * FROM FLIGHTS WHERE "DAY" > 10;""" requeteDeleteMonetDB = """DELETE FROM flights WHERE "DAY" > 10;""" requeteInsertMonetDB = """INSERT INTO flights SELECT * FROM flights10;""" requeteDropFlight10MonetDB = """DROP TABLE flights10;""" requeteCopyTableMonetDB = """CREATE TABLE flights2 AS SELECT * FROM FLIGHTS;""" requeteReplaceMonetDB = """UPDATE flights2 SET "WEATHER_DELAY" = -1 WHERE "WEATHER_DELAY" IS NULL;""" requeteDropCopyMonetDB = """DROP TABLE flights2;""" #Postgre SQL requeteSelect1PostgreSQL = """SELECT * FROM public.flights WHERE "AIRLINE" = 'AA'""" requeteSelect2PostgreSQL = """SELECT * FROM public.flights""" requeteSelect5PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 5""" requeteSelect10PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 10""" requeteSelect15PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 15""" requeteSelect20PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 20""" requeteSelect25PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 25""" requeteSelect30PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 30""" requeteSelect5_2PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 5 AND "SCHEDULED_DEPARTURE"=0030 """ requeteSelect10_2PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 10 AND "SCHEDULED_DEPARTURE"=0030 """ requeteSelect15_2PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 15 AND "SCHEDULED_DEPARTURE"=0030 """ requeteSelect20_2PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 20 AND "SCHEDULED_DEPARTURE"=0030 """ requeteSelect25_2PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 25 AND "SCHEDULED_DEPARTURE"=0030 """ requeteSelect30_2PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 30 AND "SCHEDULED_DEPARTURE"=0030 """ requeteCreateTable10PostgreSQL = """CREATE TABLE flights10 AS SELECT * FROM FLIGHTS WHERE "DAY" > 10""" requeteDeletePostgreSQL = """DELETE FROM flights WHERE "DAY" > 10""" requeteInsertPostgreSQL = """INSERT INTO flights SELECT * FROM flights10""" requeteDropFlight10PostgreSQL = """DROP TABLE flights10""" requeteCopyTablePostgreSQL = """CREATE TABLE flights2 AS SELECT * FROM FLIGHTS""" requeteReplacePostgreSQL = """UPDATE flights SET "WEATHER_DELAY" = -1 WHERE "WEATHER_DELAY" IS NULL""" requeteDropCopyPostgreSQL = """DROP TABLE flights2""" rapport : str = "" def initMonetDB(): global rapport reset_data_monetdb() time = create_table_monetdb() result = "[MonetDB] create table: time = " + str(time) + " s \n" rapport = rapport + "\n" + result print(result) time = load_data_monetdb() result = "[MonetDB] load data : time = " + str(time) + " s \n" rapport = rapport + "\n" + result print(result) def execMonetDB(str): return requete_monetdb(str) def runMonetDB(): execForMonetDB(5,[requeteSelect1MonetDB]) execForMonetDB(5,[requeteSelect2MonetDB]) execForMonetDB(5,[requeteSelect5MonetDB]) execForMonetDB(5,[requeteSelect10MonetDB]) execForMonetDB(5,[requeteSelect15MonetDB]) execForMonetDB(5,[requeteSelect20MonetDB]) execForMonetDB(5,[requeteSelect25MonetDB]) execForMonetDB(5,[requeteSelect30MonetDB]) execForMonetDB(5,[requeteSelect5_2MonetDB]) execForMonetDB(5,[requeteSelect10_2MonetDB]) execForMonetDB(5,[requeteSelect15_2MonetDB]) execForMonetDB(5,[requeteSelect20_2MonetDB]) execForMonetDB(5,[requeteSelect25_2MonetDB]) execForMonetDB(5,[requeteSelect30_2MonetDB]) execForMonetDB(5,[requeteCreateTable10MonetDB,requeteDeleteMonetDB,requeteInsertMonetDB,requeteDropFlight10MonetDB]) #execMonetDB(requeteDropCopyMonetDB) #execForMonetDB(5,[requeteCopyTableMonetDB,requeteReplaceMonetDB,requeteDropCopyMonetDB]) # 1.34 s #execute n fois les n requêtes def execForMonetDB(n, tabReq): global rapport t = [0] * len(tabReq) for i in range(n) : print(i+1,"/",n) for j in range(len(tabReq)) : t[j]+=execMonetDB(tabReq[j]) print("calcul en cours...") for j in range(len(tabReq)): t[j] = t[j]/n result = "[MonetDB] requete (moyenne de " + str(n) +") : " + str(tabReq[j]) + "\n time = " + str(t[j]) + " s\n" rapport = rapport + "\n" + result print(result) def initPostgreSQL(): global rapport reset_database_postgres() time = create_tables_postgres() result = "[PostgreSQL] create table: time = " + str(time) + " s\n" rapport = rapport + "\n" + result print(result) time = create_data_postgres() result = "[PostgreSQL] load data : time = " + str(time) + " s\n" rapport = rapport + "\n" + result print(result) def initIndex(): global rapport time = execPostgreSQL("""CREATE INDEX idx_day ON flights ("DAY");""") result = "[PostgreSQL] create index : time = " + str(time) + " s\n" rapport = rapport + "\n" + result print(result) def execPostgreSQL(str): return requete_postgres(str) def runPostgreSQL(): execForPostgreSQL(1,[requeteSelect1PostgreSQL]) execForPostgreSQL(1,[requeteSelect2PostgreSQL]) execForPostgreSQL(1,[requeteSelect5PostgreSQL]) execForPostgreSQL(1,[requeteSelect10PostgreSQL]) execForPostgreSQL(1,[requeteSelect15PostgreSQL]) execForPostgreSQL(2,[requeteSelect20PostgreSQL]) execForPostgreSQL(2,[requeteSelect25PostgreSQL]) execForPostgreSQL(3,[requeteSelect30PostgreSQL]) execForPostgreSQL(5,[requeteSelect5_2PostgreSQL]) execForPostgreSQL(5,[requeteSelect10_2PostgreSQL]) execForPostgreSQL(5,[requeteSelect15_2PostgreSQL]) execForPostgreSQL(5,[requeteSelect20_2PostgreSQL]) execForPostgreSQL(5,[requeteSelect25_2PostgreSQL]) execForPostgreSQL(5,[requeteSelect30_2PostgreSQL]) execForPostgreSQL(1,[requeteCreateTable10PostgreSQL,requeteDeletePostgreSQL,requeteInsertPostgreSQL,requeteDropFlight10PostgreSQL]) #execPostgreSQL(requeteDropCopyPostgreSQL) #execForPostgreSQL(5,[requeteCopyTablePostgreSQL,requeteReplacePostgreSQL,requeteDropCopyPostgreSQL]) # 11.97 s # execute n fois les n requêtes def execForPostgreSQL(n, tabReq): global rapport t = [0] * len(tabReq) for i in range(n): print(i+1,"/",n) for j in range(len(tabReq)): t[j] += execPostgreSQL(tabReq[j]) print("calcul en cours...") for j in range(len(tabReq)): t[j] = t[j] / n result = "[PostgreSQL] requete (moyenne de " + str(n) +") : " + str(tabReq[j]) + "\n time = " + str(t[j]) + " s\n" rapport = rapport + "\n" + result print(result) if __name__ == '__main__': initMonetDB() runMonetDB() rapport += "\n" initPostgreSQL() #initIndex() runPostgreSQL() print("/////////////////////////////////////////////////////////////") print(rapport) print("/////////////////////////////////////////////////////////////") date = datetime.now() nom_fichier = "result" + date.strftime("%d_%m_%y_%H_%M_%S") + ".txt" #un nom de fichier unique pour ne pas écraser les anciens résultats with open(nom_fichier, 'w') as fichier: fichier.write(rapport)