For this study, we used Apache AsterixDB as our development and evaluation platform. This submission includes the code enabling asterixdb to control the execution of a multi-join query. Such controls would allow a multi-join query to execute under any of the Left-Deep Tree, Right-Deep Tree, Bushy Tree, Static Right-Deep Tree, Sequential Right-Deep Tree, and Sequential-Static Right-Deep Tree.
We used Wisconsin Data Generator (https://github.com/shivajah/JSON-Wisconsin-Data-Generator) for generating the data following Wisconsin Benchmark Schema and data generation rules. For further details on settings and queries please refer to https://escholarship.org/uc/item/2hv8408v , Chapter 4 and Appendix.
Following is the description on how to install and use AsterixDB.
AsterixDB is a BDMS (Big Data Management System) with a rich feature set that sets it apart from other Big Data platforms. Its feature set makes it well-suited to modern needs such as web data warehousing and social data storage and analysis. AsterixDB has:
-
Data model
A semistructured NoSQL style data model (ADM) resulting from extending JSON with object database ideas -
Query languages
Two expressive and declarative query languages (SQL++ and AQL) that support a broad range of queries and analysis over semistructured data -
Scalability
A parallel runtime query execution engine, Apache Hyracks, that has been scale-tested on up to 1000+ cores and 500+ disks -
Native storage
Partitioned LSM-based data storage and indexing to support efficient ingestion and management of semistructured data -
External storage
Support for query access to externally stored data (e.g., data in HDFS) as well as to data stored natively by AsterixDB -
Data types
A rich set of primitive data types, including spatial and temporal data in addition to integer, floating point, and textual data -
Indexing
Secondary indexing options that include B+ trees, R trees, and inverted keyword (exact and fuzzy) index types -
Transactions
Basic transactional (concurrency and recovery) capabilities akin to those of a NoSQL store
Learn more about AsterixDB at its website.
To build AsterixDB from source, you should have a platform with the following:
- A Unix-ish environment (Linux, OS X, will all do).
- git
- Maven 3.3.9 or newer.
- JDK 11 or newer.
- Python 3.6+ with pip and venv
Instructions for building the master:
-
Checkout AsterixDB master:
$git clone https://github.com/apache/asterixdb.git
-
Build AsterixDB master:
$cd asterixdb $mvn clean package -DskipTests
Here are steps to get AsterixDB running on your local machine:
-
Start a single-machine AsterixDB instance:
$cd asterixdb/asterix-server/target/asterix-server-*-binary-assembly/apache-asterixdb-*-SNAPSHOT $./opt/local/bin/start-sample-cluster.sh
-
Good to go and run queries in your browser at:
http://localhost:19006
-
Read more documentation to learn the data model, query language, and how to create a cluster instance.
To generate the documentation, run asterix-doc with the generate.rr profile in maven, e.g mvn -Pgenerate.rr ...
Be sure to run mvn package
beforehand or run mvn site
in asterix-lang-sqlpp to generate some resources that
are used in the documentation that are generated directly from the grammar.
- Users
maling list: [email protected]
Join the list by sending an email to [email protected] - Developers and contributors
mailing list:[email protected]
Join the list by sending an email to [email protected]