Coder Social home page Coder Social logo

dbgroup-at-ucsc / dbtune Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 3.0 133.19 MB

This research project aims to develop tools in order to make index tuning easier and more effective.

Home Page: http://users.soe.ucsc.edu/~alkis/tuning/

License: Other

Java 99.01% Shell 0.99%

dbtune's Introduction

DBTune Read Me

DBTune is an open-source library for Automatic Database Tuning. It provides an abstraction of the DBMS, utilities for doing common database-tuning-activities, as well as facilities to execute what-if optimization on a RDBMS. It is part of the DBTune project.

See the project web site located at https://github.com/dbgroup-at-ucsc/dbtune for the latest info.

Documentation can be found in https://github.com/dbgroup-at-ucsc/dbtune/wiki

License information regarding DBTune can be found in the LICENSE file.

dbtune's People

Contributors

ivotron avatar tqtrung avatar hsanchez avatar npolyzotis avatar

Stargazers

Akash Chetty avatar  avatar  avatar  avatar  avatar

Watchers

 avatar Jeff LeFevre avatar  avatar James Cloos avatar  avatar

dbtune's Issues

C++ traits or mixins like in Java (discussion)

Mixins or traits seems suitable for what we are trying to accomplish. However, I do have some concerns:

  • Since they are not supported in Java (i.e., not built-in support), trying to emulate them, IMHO, looks to me as complex as the other proposals. Am I missing anything?
  • Is Java the right language for this? I mean Java does not support traits (at the language level), and we are using Scala already, which it does supports traits (similar to C++ traits and Ruby Mixins), so my question is:
    can we consider the idea of building a layer of functionality using Scala's traits and mixins which will allow us to avoid the use of generics (core classes) and leave the core classes intact (with generic)?

should we discuss this on Monday's meeting?

Make connectivity properties optional (infer them from URL property)

Code dealing with connection establishment should be modified so that it doesn't require the user to provide connection parameters if they're already provided through the URL.

Affected files are:

  • AbstractDatabaseConnectionManager
  • JdbcConnectionFactoryImpl
  • JdbcDatabaseConnectionManager
  • Platform
  • edu.ucsc.dbtune.core.DatabasePackageTest
  • edu.ucsc.dbtune.spi.ibg.WorkloadHandlingTest
  • build.properties
  • This Wiki entry

Mirroring of the generics hierarchy

Okay, just mirroring the entire hierarchy will be a pain, which it will increase code maintainability cost. So the idea is to find a solution that will scale, i.e., support new dbms.

Some of the techniques that I have evaluated are

  1. A Facade plus a new set of interfaces. This technique is the one used in the java.util.concurrent API.
  2. Checked typing. Here we will move the type declaration from the class to the methods. Additionally, we will add a parameter Class<?> resolver to the signature of the affected methods.
  3. A set of interfaces (only the main ones) that will be transformed to their appropriate generic classes by using the Acyclic Visitor Pattern.

... and more

Create metadata CLI high-level classes

  • Index(name:String, columns:List, pages:#, sec:#, types:List, table:String). Note: sec = the number of entry keys in the index.
  • Schema(tables:List, base_configuration:List). Note: base_configuration = set of indexes.
  • Column(unique_entry_count:#, type:String, name:String, schema:Schema)
  • Table(columns:List, indexes:List, pages:#, cardinality:#, name:String). Note: columns = attributes

improper use of serialization in edu.ucsc.dbtune.core.metadata.DatabaseObject

classes designed for inheritance (e.g., interfaces and abstract classes) should rarely implement Serializable, since this would force a significant and (often unwanted) task on their implementors and subclasses. And in most cases (if implemented), it will lead to serious and very tricky to find bugs in your code.

Team settings and permissions

done items

  • created three more teams: external collaborators, phd students, and ms students.
  • moved Jeff, Ivo, and myself to the Phd Students team

need to be done

  • ask Alkis to remove us from the owners team; he will be the only owner there.

Move docs/ folder to wiki repository

the wiki repository will contain all the documentation for the project, this means that meeting minutes, reading club overview's, etc. will have to be moved to it

Rename IndexExtractor to CandidateIndexExtractor

The name IndexExtractor is a little bit ambiguous. The interface of this class resembles more to a recommendation one. It could be thought as a "naive" or SQL-based (in a syntactical sense, not a DBMS one) advisor.

Even though we don't have an interface for an Advisor (an Advisor class exists but it's calling the DB2 command line tool db2advis; see issue #48) yet, we could come up with an interim Advisor interface based on this class and make IndexExtractor a child of it. Then we could rename IndexExtractor to SyntaxBasedAdvisor or something more ad-hoc.

Configure a build on Jenkins

Create a build that will be continuously monitoring our Git repo and through Ant will build and run all the tests.

This item requires:

  • install and configure the Git plugin
  • configure the Ant plugin
  • install an SMTP server (if we want e-mails to be sent)

Remove or rename Advisor class

Class core.Advisor contains calls to the db2advis command-line tool. Could be renamed to something more meaningful, like DB2AdvisorCommandLine.

Remove IntelliJ's ipr file

It is causing problems when pulling changes from the master. There is not point of having that ipr file in GitHub.

Remove Exception swallowing

Code swallows exceptions in a lot files where catch() statements are used. This makes the code really hard to debug.

Implement INUM

We must integrate INUM at some point. INUM operates on top of the PG optimizer, so the integration should be easy. However, we need to implement a new WhatIfOptimizer class that talks to INUM instead of the normal PG++ what-if optimizer.

Create package core.connection or core.connectivity

The API would be more easily "browsed" if a connectivity package exists for placing all connection-related classes, namely:

  • Connection
  • ConnectionManager
  • JdbcConnectionFactory

and all their implementations.

Create a Wiki entry to describe the change-pull-fix-push Workflow

We need to clearly specify what is the workflow that everybody should follow when submitting patches to the master branch. In short:

  • git pull
  • git branch -b master issue<#>
  • commit many times
  • git rebase
  • ant test.all
  • git push

After this, then the CI tool will double check that we haven't broken anything.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.