130 lines
4.6 KiB
Python
130 lines
4.6 KiB
Python
from MonetDB import *
|
|
from PostgreSQL import *
|
|
import time
|
|
|
|
data =[]
|
|
header=["Nom de requete","Temps"]
|
|
#Monet DB
|
|
requeteSelect1MonetDB = """SELECT * FROM flights WHERE "AIRLINE" = 'AA';"""
|
|
requeteSelect2MonetDB = """SELECT * FROM flights;"""
|
|
requeteSelect3MonetDB = """SELECT * FROM flights WHERE "DAY" > 10;"""
|
|
requeteSelect4MonetDB = """SELECT * FROM flights WHERE "DAY" > 30;"""
|
|
|
|
requeteCreateTableMonetDB = """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;"""
|
|
|
|
|
|
#Postgre SQL
|
|
requeteSelect1PostgreSQL = """SELECT * FROM public.flights WHERE "AIRLINE" = 'AA'"""
|
|
requeteSelect2PostgreSQL = """SELECT * FROM public.flights"""
|
|
requeteSelect3PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 10"""
|
|
requeteSelect4PostgreSQL = """SELECT * FROM public.flights WHERE "DAY" > 30"""
|
|
|
|
requeteCreateTablePostgreSQL = """CREATE TABLE flights10 AS SELECT * FROM FLIGHTS WHERE "DAY" > 10"""
|
|
requeteDeletePostgreSQL = """DELETE FROM flights WHERE "DAY" > 10"""
|
|
requeteInsertPostgreSQL = """INSERT INTO flights SELECT * FROM flights10"""
|
|
|
|
|
|
def display_table(data, headers):
|
|
column_lengths = [len(header) for header in headers]
|
|
for row in data:
|
|
for idx, cell in enumerate(row):
|
|
column_lengths[idx] = max(column_lengths[idx], len(str(cell)))
|
|
row_format = " | ".join(["{{:<{}}}".format(length) for length in column_lengths])
|
|
print(row_format.format(*headers))
|
|
print("-|-".join(['-' * length for length in column_lengths]))
|
|
for row in data:
|
|
print(row_format.format(*[str(cell) for cell in row])) # Ensure cells are strings
|
|
|
|
def initMonetDB():
|
|
reset_data_monetdb()
|
|
start_time = time.time()
|
|
create_table_monetdb()
|
|
end_time = time.time()
|
|
print("[MonetDB] create table: time = ", (end_time - start_time), "s\n")
|
|
|
|
start_time = time.time()
|
|
load_data_monetdb()
|
|
end_time = time.time()
|
|
print("[MonetDB] load data : time = ", (end_time - start_time), "s\n")
|
|
|
|
def execMonetDB(str):
|
|
start_time = time.time()
|
|
requete_monetdb(str)
|
|
end_time = time.time()
|
|
return end_time-start_time
|
|
|
|
def runMonetDB():
|
|
execForMonetDB(5,[requeteSelect1MonetDB])
|
|
execForMonetDB(5,[requeteSelect2MonetDB])
|
|
execForMonetDB(5,[requeteSelect3MonetDB])
|
|
execForMonetDB(5,[requeteSelect4MonetDB])
|
|
execForMonetDB(5,[requeteDropflight10MonetDB,requeteCreateTableMonetDB,requeteDeleteMonetDB,requeteInsertPostgreSQL])
|
|
|
|
|
|
#execute n fois les n requêtes
|
|
def execForMonetDB(n, tabReq):
|
|
t = [0] * len(tabReq)
|
|
for i in range(n) :
|
|
for j in range(len(tabReq)) :
|
|
t[j]+=execMonetDB(tabReq[j])
|
|
|
|
for j in range(len(tabReq)):
|
|
t[j] = t[j]/n
|
|
print("[MonetDB] requete (moyenne de",n,") :", tabReq[j] , "\n time = ", t[j], "s\n")
|
|
|
|
|
|
|
|
def initPostgreSQL():
|
|
reset_database_postgres()
|
|
start_time = time.time()
|
|
create_tables_postgres()
|
|
end_time = time.time()
|
|
print("[PostgreSQL] create table: time = ", (end_time - start_time), "s")
|
|
|
|
start_time = time.time()
|
|
create_data_postgres()
|
|
end_time = time.time()
|
|
print("[PostgreSQL] load data : time = ", (end_time - start_time), "s")
|
|
|
|
def execPostgreSQL(str):
|
|
start_time = time.time()
|
|
requete_monetdb(str)
|
|
end_time = time.time()
|
|
return end_time-start_time
|
|
|
|
def runPostgreSQL():
|
|
execForMonetDB(5,[requeteSelect1PostgreSQL])
|
|
execForMonetDB(5,[requeteSelect2PostgreSQL])
|
|
execForMonetDB(5,[requeteSelect3PostgreSQL])
|
|
execForMonetDB(5,[requeteSelect4PostgreSQL])
|
|
execForMonetDB(5,[requeteDropflight10PostgreSQL,requeteCreateTablePostgreSQL,requeteDeletePostgreSQL,requeteInsertPostgreSQL])
|
|
|
|
# execute n fois les n requêtes
|
|
def execForPostgreSQL(n, tabReq):
|
|
t = [0] * len(tabReq)
|
|
for i in range(n):
|
|
for j in range(len(tabReq)):
|
|
t[j] += execPostgreSQL(tabReq[j])
|
|
|
|
for j in range(len(tabReq)):
|
|
t[j] = t[j] / n
|
|
print("[PostgreSQL] requete (moyenne de", n, ") :", tabReq[j], "\n time = ", t[j], "s\n")
|
|
|
|
def runPostgreSQL():
|
|
data.append([requeteSelect1PostgreSQL,execPostgreSQL(requeteSelect1PostgreSQL)])
|
|
data.append([requeteSelect2PostgreSQL,execPostgreSQL(requeteSelect2PostgreSQL)])
|
|
data.append([requeteSelect3PostgreSQL,execPostgreSQL(requeteSelect3PostgreSQL)])
|
|
data.append([requeteSelect4PostgreSQL,execPostgreSQL(requeteSelect4PostgreSQL)])
|
|
|
|
if __name__ == '__main__':
|
|
#initMonetDB()
|
|
#runMonetDB()
|
|
#initPostgreSQL()
|
|
|
|
runPostgreSQL()
|
|
display_table(data, header)
|
|
|