GithubHelp home page GithubHelp logo

jameshnsears / xqa-documentation Goto Github PK

View Code? Open in Web Editor NEW
7.0 2.0 0.0 1.47 MB

XQA is a suite of Docker based microservices that improves the scalability of BaseX.

License: Apache License 2.0

Shell 100.00%
activemq basex docker-container java python

xqa-documentation's Introduction

XQA - XML Quality Assurance CircleCI

1. Introduction

  • XQA is a suite of Docker based microservices that improves the scalability of BaseX - an XML database engine.
  • Instead of loading each XML file into a single BaseX engine, XQA distributes them - via an AMQP message broker - across multiple BaseX engines.
  • XQA ships with a basic web frontend - as well as a REST API - which lets you run XQuery, and analytics, against the distributed data.

2. High Level Design

High Level Design

3. Key Features

  • Easy to deploy / extend:
    • each microservice runs in its own container.
    • add extra BaseX engines easily - they self register against the AMQP message broker.
    • can run in either a docker-compose or k8s environment.
  • Proven scalability & performance improvements - graphs in xqa-perf show:
    • ingest timing statistics.
    • XML file distribution.
  • Quality Radiatior for CI; static analysis and coverage metrics.
  • Transparency:
    • container console logging.
    • JSON instrumentation sent to a central PstgreSQL instance.

4. Open Source Technologies

  • ActiveMQ
  • Angular
  • Docker - containers can be built from GitHub or pull'd from hub.docker.com.
  • Java 10/11.
  • PostgreSQL 11
  • Python 3.6
  • Ubuntu 18.04

5. Microservices

microservices

CI GitHub
Build Status xqa-commons-qpid-jms a Maven Central shared library.
Build Status xqa-db PostgreSQL.
Build Status xqa-db-amqp AMQP interface to PostgresSQL.
Build Status xqa-ingest XML file loader.
Build Status xqa-ingest-balancer distributes XML across XQA BaseX engine(s).
Build Status xqa-message-broker ActiveMQ.
Build Status xqa-perf end to end integration tests, with Matplotlib graphs.
Build Status xqa-query-balancer XQA REST API.
Build Status xqa-query-ui UI for querying XQA.
Build Status xqa-shard BaseX engine with AMQP interface.
xqa-test-data a collection of XML files used by XQA.

6. Limitatons

XQA is a proof of concept project. It scratched an itch and achieved what it set out to prove. Refer to the GitHub issue board for outstanding issues.

xqa-documentation's People

Contributors

jameshnsears avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

xqa-documentation's Issues

Extend xqa-perf with xqa-query-ui XQuery graps

in xqa-perf create graphs for xquery request / responses?
+
re-run all the graphs - as some of the msi ones are wrong?
+
go through and tune xqa-perf paramaters + tidy up the readme on how to do this

Implement JMX extenions?

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=<PORT_NUMBER> -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=<HOST'S_IP>
service:jmx:rmi:///jndi/rmi://<HOST'S_IP>:<PORT_NUMBER>/jmxrmi

Implement TX?

take off an ingest msg in a transactional...
tx.start
= take off message
= find smallest shard
= send to smallest shard
= tx.commit

if no shards reply then tx.rollback, wait a little an try n times more before shutting down

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.