Protokoll 2013-09-05 Review Philip Haußmann
Teilnehmer
- Christian Stier
- Philip Haußmann
- Misha Strittmatter
- Christoph Föhrdes
- Jörg Henß
- Philipp Merkle
Protokoll
Allgemein
- Misha: Methodeninterne Code-Blöcke kommentieren (falls nicht ohnehin Extraktion einer privaten Methode)
- Misha: QueryTemplateType vs. Template? Name kommt aus OLTPBenchmark
QueryGenerator
- Christian: fetchTableSample, Rückgabetyp ist ungünstig, besser in Objekt kapseln
- Jörg: Konfigurationsparameter je Klasse kapseln in spezifischem Konfigurationsobjekt? -> Eher nicht
- Jörg: main-Methode: shutdown "fällt vom Himmel", besser ein cleanup() aufrufen, welches dann shutdown durchführt
QueryCollectionFileIO
- Misha: es befinden sich in File Queries + Metriken; anfangs verwirrend (Philipp: am besten Eingabedatei nicht überschreiben, sondern à la "Speichern unter..." ablegen)
DBRequestorRunnable
- Christian: run-Methode kommentieren
XSD-Schema
- performanceMetrics sind MSSQL-spezifisch, sinnvoll wäre gemeinsamer Obertyp; Stichwort xsd-Extensions?
Configuration.java
- Jörg: neue Methden parseInt(), parseDouble() etc.
- instance wird nie gesetzt -> wird jedes Mal neu geladen
- Philipp: statt instance besser einen static initializer verwenden? dann aber Speicherort der Config zur Compile-Zeit gefixt, es sei denn man liest den Speicherort wiederum aus einer Config aus
SamplingQueryGenerator.java
- Christian: createSamplingQuery, warum keine PreparedStatements statt "?" von Hand zu ersetzen?
- Jörg: Falls nein, dann zumindest "\\?" als Konstante deklarieren
- Christian: close-Methode taucht in mehreren Methoden auf -> extrahieren in Utility-Klasse?
- Außerdem: ResultSet wird automatisch geschlossen beim Schließen eines Statements (siehe Javadoc)
QueryInstanceFactory
- Jörg: StringBuilder verwenden
UpdateFactory
- Jörg: Seed für Random Generator vorsehen? -> Nein, da an anderer Stelle (SQL-Statement) Zufall hereinkommt, der nicht über Seed kontrollierbar
- Jörg: " " ist Magic Value, besser Konstante draus machen
Profiler
- Christian, Christoph: strategy besser im Konstruktor initialisieren
IsolatedQueryProfilingStrategy
- Christoph: vermisse Collection von Strategien, Strategien sind hart-gecoded, dadurch momentan feste Bindung an MSSQL
- Jörg: for-Schleife in private-method extrahieren
- Christoph: Runnable eigentlich in Verbindung mit Threads verwendet; run() sollte nicht direkt aufgerufen werden, oder Interface nicht verwenden
DBRequestorRunnable
- Christoph: queryTemplate in Konstruktur verschieben, da die Klasse nichts sinnvolles tut ohne das Template
- Christoph: dmvProfilingDataSource von außen konfigurierbar machen, sont feste Abhängigkeit zu MSSQL
ProfilerDataSource
- Jörg: SQL-Statements als PreparedStatement?
DBConnectionPool
- Christian: READ_UNCOMMITTED sollte von außen vom Aufruf ersichtlich sein
TableStatisticsCalculator
- Jörg: sehr ähnliche Methoden; Wiedervwendung betreiben?