minor changes

This commit is contained in:
Sandro Fuetsch Titan
2026-05-26 20:13:40 +02:00
parent edfd198bcd
commit 3c3e10fd78
6 changed files with 25 additions and 4 deletions
+6 -1
View File
@@ -12,13 +12,18 @@ class BaseStrategy:
self.cursor = conn.cursor()
self.db_name = db_name
self.queries = queries
self.BASENAME = "Base "
self.strategy_name = self.BASENAME
def set_queries(self, queries):
self.queries = queries
def set_strategy(self, name: str):
self.strategy_name = self.BASENAME + name
def run(self):
for strategy, query in self.queries.items():
print("Running: " + strategy + "\n")
print("Running: " + self.strategy_name + "\n")
start = time.time()
self.cursor.execute(query)
end = time.time()
+2
View File
@@ -3,6 +3,8 @@ from baseStrategy import BaseStrategy
class HashJoinStrategy(BaseStrategy):
def __init__(self, conn, db_name, all_queries):
self.BASENAME = "Hash Join "
super().__init__(conn, db_name, all_queries)
def run(self):
+12 -3
View File
@@ -15,33 +15,42 @@ if __name__ == '__main__':
# Aufgabe 1
join_manager = Manager(BaseStrategy(conn_postsql, db_post, queries_postgres["with_index"]))
# join_manager.setup_db("no-index")
# join_manager.execute() # 3 Mrd. Tupel via Kreuzprodukt -> > 10 min
# join_manager.execute() # 3 Billionen. Tupel via Kreuzprodukt -> > 10 min
join_manager.setup_db("unique-publ")
join_manager.setStrategyName("unique-publ")
join_manager.execute()
join_manager.setup_db("cl-both")
join_manager.setStrategyName("cl-both")
join_manager.execute()
# Aufgabe 2 — vorheriger Lauf war 'cl-both' (CLUSTER hat Tabelle physisch sortiert);
# Aufgabe 2
# reload_data=True stellt die ursprüngliche Ladereihenfolge wieder her.
join_manager.setStrategy(NestedInnerLoopStrategy(conn_postsql, db_post, queries_postgres["with_index"]))
join_manager.setup_db("nc-publ", reload_data=True)
join_manager.setStrategyName("nc-publ")
join_manager.execute()
join_manager.setup_db("nc-auth")
join_manager.setStrategyName("nc-auth")
join_manager.execute()
join_manager.setup_db("nc-both")
join_manager.setStrategyName("nc-both")
join_manager.execute()
# Aufgabe 3 — Tabelle ist noch im Original-Layout, kein Reload nötig.
# Aufgabe 3
join_manager.setStrategy(SortMergeStrategy(conn_postsql, db_post, queries_postgres["no_index"]))
join_manager.setup_db("no-index")
join_manager.setStrategyName("no-index")
join_manager.execute()
join_manager.setQueries(queries_postgres["with_index"])
join_manager.setup_db("nc-both")
join_manager.setStrategyName("nc-both")
join_manager.execute()
join_manager.setup_db("cl-both")
join_manager.setStrategyName("cl-both")
join_manager.execute()
# Aufgabe 4 — wieder vom CLUSTER-Zustand wegkommen.
join_manager.setStrategy(HashJoinStrategy(conn_postsql, db_post, queries_postgres["no_index"]))
join_manager.setup_db("no-index", reload_data=True)
join_manager.setStrategyName("nc-publ")
join_manager.execute()
+3
View File
@@ -8,6 +8,9 @@ class Manager:
def setStrategy(self, strategy: BaseStrategy):
self.strategy = strategy
def setStrategyName(self, name: str):
self.strategy.set_strategy(name)
def setQueries(self, queries: dict[str, str]):
self.strategy.set_queries(queries)
+1
View File
@@ -3,6 +3,7 @@ from baseStrategy import BaseStrategy
class NestedInnerLoopStrategy(BaseStrategy):
def __init__(self, conn, db_name, all_queries):
self.BASENAME = "Nested Inner Loop "
super().__init__(conn, db_name, all_queries)
def run(self):
+1
View File
@@ -3,6 +3,7 @@ from baseStrategy import BaseStrategy
class SortMergeStrategy(BaseStrategy):
def __init__(self, conn, db_name, all_queries):
self.BASENAME = "Sort Merge "
super().__init__(conn, db_name, all_queries)
def run(self):