{"id":2284,"date":"2013-10-13T17:45:27","date_gmt":"2013-10-13T21:45:27","guid":{"rendered":"http:\/\/hstore.cs.brown.edu\/?page_id=2284"},"modified":"2013-10-13T18:40:20","modified_gmt":"2013-10-13T22:40:20","slug":"automatic-database-designer","status":"publish","type":"page","link":"https:\/\/hstore.cs.brown.edu\/documentation\/deployment\/automatic-database-designer\/","title":{"rendered":"Automatic Database Designer"},"content":{"rendered":"

\u00ab<\/B> Deferred Query Execution<\/a><\/div>
OLAP JVM Snapshots<\/a> \u00bb<\/B><\/div>
<\/div><\/p>\n

The following are instructions on how to use H-Store’s database design tool, called Horticulture<\/em>. This work is was part of the automatic database partitioning project<\/a>.<\/p>\n

Source Code Overview<\/h2>\n

All of the source code for Horticulture is available in the main source code repository<\/a>.<\/p>\n

The design tool consists of two components: (1) the search algorithm<\/b> and (2) the cost model<\/b>. The search algorithm is the process that Horticulture uses to find the best design for an arbitrary application. The main large-neighborhood search algorithm described in the SIGMOD paper is here<\/a>. This algorithm executes multiple rounds of a branch-and-bound search algorithm<\/a>.<\/p>\n

The search is guided by a cost model (i.e., objective function). The default cost model<\/a> for Horticulture computes the ratio of the number of single-partition transactions to distributed transactions in the sample workload.<\/p>\n

Workload Traces<\/h2>\n

The sample workloads that used in the experiments are available in H-Store’s supplemental file repository<\/a>. See these instructions<\/a> on how to create these workload files for other benchmark implementations in H-Store.<\/p>\n

Setup<\/h2>\n

Once you have the workloads and your project jar, you can create the “mappings” and “stats” files automatically using this command:<\/p>\n

ant designer-prepare<\/tt> -Dproject=$BENCHMARK<\/pre>\n

And then you can invoke the designer code:<\/p>\n

ant designer-benchmark<\/tt> -Dproject=$BENCHMARK<\/pre>\n

Execution<\/h2>\n
\r\nant designer-benchmark<\/tt> -Dproject=$BENCHMARK \\\r\n   -Dworkload=files\/workloads\/${BENCHMARK}.trace.gz \\\r\n   -Dstats=files\/stats\/${BENCHMARK}.stats.gz \\\r\n   -Dlimit=5000 \\\r\n   -Dhints=files\/designhints\/${BENCHMARK}.hints \\\r\n   -Dpartitioner=edu.brown.designer.partitioners.BranchAndBoundPartitioner \\\r\n   -Dcostmodel=edu.brown.costmodel.SingleSitedCostModel\r\n<\/pre>\n

Options:<\/p>\n