Skip to content

Refactor #3

Open
Open
@angoca

Description

@angoca

Hi, I have been interested in this project for many years, and I have used in different occasions.
Currently, I have used this project for a class I give, to compare different RDBMS and test performance. I tried to use the version 5, but this requires many modifications in the code for each DB. I haven't tried version 6 yet, but I see the lack of documentation for extension to other RDBMS which makes this version very difficult to use for a student that is just learning database. I do not want them to port the application, I just want they focus in the database side.

I have done a big refactoring for version 4, which is available at: https://github.com/ECI-SGBD/BenchmarkSQL-4

I propose you I could do the same refactoring in version 6, in order to update some old dependencies this project. The changes I propose are:

  • Use Maven instead of Ant.
  • Include drivers in Maven's pom, instead of manual downloading o including in this code.
  • Use packages for all classes.
  • Use log4j v2, instead of log4j v1.
  • Change System.output to loggers, for all classes (the 3 main methods: sql, local and benchmark).
  • Organize files according Maven structure. This refers to resources directory, and a directory for each kind of file: r, python, Bash scripts, etc. This organize the run directory.
  • All documentation in one directory, separated from code or scripts.
  • Documentation for each RDBMS, not just one for all of them.
  • Format the code according Eclipse format, which is a standard one.
  • Organize imports.
  • Use PMD, findbugs and checkstyle for better code.
  • Create javadoc headers, in order to be capable of generating a documentation of the code.
  • Put a FIXME or TODO, in each part of the code where an extension should be done for other RDBMS.
  • Use Wiki, to explain things about this project. How to use the python script, generation of the diagrams with r, etc.
    • Documentation about the parameters that receives the application.
  • Scripts to run in Windows.
  • Scripts to run based on the Maven structure (target directory).
  • Extra parameters, like:
    • schema, which is useful for databases like MySQL that do not use schemas. Or for other databases which uses default schema. This do not force to use benchmarksql schema.
    • Statement terminator, when ; is not available. This could use another one like 'GO' or '@', or even EOL.

If you agree with some of these changes, I could do them, and then I will create a pull request. In fact, I do not want to do a big refactoring in a program, and not being integrated into the master.

Please tell me which ones are you interested in.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions