SlideShare a Scribd company logo
1 of 41
Download to read offline
BenchX
BaseX performance platform comparison
Andy Bunce
Feb 2015
BaseX Usergroup
Prague
About me
● BaseX user-group-talk XML Prague 2013
Adventures with BaseX and Web applications
● A node.js client for the BaseX server.
https://github.com/apb2006/basex-node
● A quick start to run BaseX on OpenShift
openshift-basex-quick-start
Twitter: @apb1704
Github: apb2006
What is BenchX?
BenchX is a Web application for comparing
BaseX performance across platforms and
configurations.
In this talk:
● Why create it?
● How does it work?
● What are the results?
Why?
BaseX is easy to install!
Generally as simple as…
1. Ensure Java is installed
2. download and unzip basex.zip
3. Run basexgui or basexhttp
… and you have great tools to query and transform data.
I have tried installing BaseX on various machines around
the house…
○ PC s Windows and Unix
○ Raspberry PI
○ NAS (Netgear ReadyNAS Pro)
○ Android Tablet and Phone
● How does performance compare?
Out of curiosity...
Raspberry PI - installation notes
Runs Debian, costs £25
1. sudo apt-get install oracle-java8-jdk
2. wget http://files.basex.org/releases/7.9/BaseX79.zip
3. etc...
NAS - NETGEAR ReadyNAS Pro 2
● runs customized,
old, version of
Debian.
● music+photo store=plenty of
metadata for XML query.
1.8 GHz Intel Atom Dual Core
Processor 1 GB DDR2 SODIMM
Android - installation notes
Add a range of linux distros to your android
device through a method known as ‘chroot’
1. Install linux.
Linux Deploy, on Play store worked for me
2. ssh in
3. Install Java http://www.webupd8.org/2014/03/how-to-install-
oracle-java-8-in-debian.html
4. wget http://files.basex.org/releases/7.9/BaseX79.zip
5. etc
6. setup startup script for basexhttp
Cloud - installation notes
OpenShift
● A quick start to run BaseX on OpenShift
Quodatum/openshift-basex-quick-start
● Use BaseX on OpenShift
dirkk/openshift-basex
Amazon Web Services
● Amazon Web Services EC2 setup (Paul Swennenhuis)
http://www.swennenhuis.nl/basexfordummies/BaseX_for_dummies_part_2.pdf
Docker
● Docker image for BaseX 8.0 (Andreas Jung)
docker-basex
Why build BenchX?
● To get some numbers (and charts) to answer
“How does the performance of
these platforms compare?”
● ...and because I like building web applications
How?
Run the same queries on each platform and
compare times.
Which queries?
● Start with the XMark queries
XMark-An XML Benchmark Project
● The classic XQuery benchmark
● 20 Queries
● test data models auction site
● C executable to generate test data
○ factor to vary generated data size
http://www.xml-benchmark.org/
Sample XMark query (q05.xq)
let $auction := collection("benchx-db") return
count(
for $i in $auction/site/closed_auctions/closed_auction
where $i/price/text() >= 40
return $i/price
)
XMark data
Factor Size
0 27kb
.5 58Mb
1 116Mb
10 1.4Gb
100 11Gb
JacobSnyder/XQuery-Benchmark
● Shell script
● Runs all XMark queries
○ for range of data sizes
● Has query timeout
○ kill run after 10mins
● tab-separated text output
https://github.com/JacobSnyder/XQuery-Benchmark
But...
Unix only.
No support after the numbers are generated.
For viewing, managing, comparing
So BenchX...
BenchX : A Web Application
Suites
Library
Environments
results - table
results - graph
● Want to run against file or database
● So queries use collection("benchx-db")
will use database if it exists otherwise the folder
The datasource is defined by two parameters:
mode: “D” or “F” meaning database or file
factor: data size, floating point number used by xmlgen
xmlgen /f 100 /o benchx-db/s /s 400
Data sources
BenchX Databases
Two databases are used:
1. benchx: results library and application data.
● Created if not found using data folder
● results are documents within the db
2. benchx-db: query data generated by xmlgen.
created and dropped by the application.
(This enables application bootstrap)
BenchX Database in DBA
Library XML format
● Unique ID (GUID)
● Metadata
● Environment
● Runs
○ query name
○ mode + factor
○ time
benchmark.xsd
Project structure
● {$app-name}/
● static/{$app-name}
Deploy via copy...
Client Architecture (static)
● Angular SPA talks to BaseX RESTXQ using json
Javascript libraries
● Angular
Server architecture
● RESTXQ
● run queries with xquery:eval (allows timeout)
● proc:execute out to run xmlgen
Server Architecture
No good way to start long running queries from
http. Request is timed out after some minutes.
So Client
● creates a queue of tasks to run on server.
● Runs as sequence REST calls
Run options
Demo
● run sample f+d 0 and 0.5
● save
● compare
Results - File vs db
Results - varying the factor
Results - platforms
Related work
● An Analysis of the Current XQuery Benchmarks
Loredana Afanasiev, Maarten Marx
● MemBeR: A Micro-benchmark Repository for XQuery
Loredana Afanasie, Ioana Manolesc, Philippe Michiels
● Benchmarking XSLT Performance
Michael Kay, Debbie Lockett
● MonetDb XMark Benchmark
MonetDb
The BenchX source
https://github.com/Quodatum/BenchX
Contributions welcome
● Results for the library
● New suites
● Bug fixes/improvements
Future work
* If you have real-life data, store this data in the systems of your choice х
* Formulate real-life queries that give you similar results ✓
* Compare these measurements to get an impression on the overall performance ✓
Christian Grün Tue, 20 Jan 2015 10:43:13 -0800
@TODO
● clean up code
● xmlgen use option to split into smaller files
● create pluggable data sources per suite
The End
● Thanks
● Questions

More Related Content

What's hot

MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...MongoDB
 
How and Where in GLORP
How and Where in GLORPHow and Where in GLORP
How and Where in GLORPESUG
 
Headless drupal + react js Oleksandr Linyvyi
Headless drupal + react js   Oleksandr LinyvyiHeadless drupal + react js   Oleksandr Linyvyi
Headless drupal + react js Oleksandr LinyvyiDrupalCamp Kyiv
 
MongoDB .local Toronto 2019: Using Change Streams to Keep Up with Your Data
MongoDB .local Toronto 2019: Using Change Streams to Keep Up with Your DataMongoDB .local Toronto 2019: Using Change Streams to Keep Up with Your Data
MongoDB .local Toronto 2019: Using Change Streams to Keep Up with Your DataMongoDB
 
MongoDB: tips, trick and hacks
MongoDB: tips, trick and hacksMongoDB: tips, trick and hacks
MongoDB: tips, trick and hacksScott Hernandez
 
Using MongoDB and Python
Using MongoDB and PythonUsing MongoDB and Python
Using MongoDB and PythonMike Bright
 
Javascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To TailJavascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To TailCliffano Subagio
 
ETL With Cassandra Streaming Bulk Loading
ETL With Cassandra Streaming Bulk LoadingETL With Cassandra Streaming Bulk Loading
ETL With Cassandra Streaming Bulk Loadingalex_araujo
 
Cassandra Summit 2014: Reading Cassandra SSTables Directly for Offline Data A...
Cassandra Summit 2014: Reading Cassandra SSTables Directly for Offline Data A...Cassandra Summit 2014: Reading Cassandra SSTables Directly for Offline Data A...
Cassandra Summit 2014: Reading Cassandra SSTables Directly for Offline Data A...DataStax Academy
 
High Throughput Analytics with Cassandra & Azure
High Throughput Analytics with Cassandra & AzureHigh Throughput Analytics with Cassandra & Azure
High Throughput Analytics with Cassandra & AzureDataStax Academy
 
Cubes – pluggable model explained
Cubes – pluggable model explainedCubes – pluggable model explained
Cubes – pluggable model explainedStefan Urbanek
 
Python business intelligence (PyData 2012 talk)
Python business intelligence (PyData 2012 talk)Python business intelligence (PyData 2012 talk)
Python business intelligence (PyData 2012 talk)Stefan Urbanek
 
Realm.io par Clement Sauvage
Realm.io par Clement SauvageRealm.io par Clement Sauvage
Realm.io par Clement SauvageCocoaHeads France
 
Shrug2017 arcpy data_and_you
Shrug2017 arcpy data_and_youShrug2017 arcpy data_and_you
Shrug2017 arcpy data_and_youSHRUG GIS
 
Elk with Openstack
Elk with OpenstackElk with Openstack
Elk with OpenstackArun prasath
 

What's hot (20)

XQuery Design Patterns
XQuery Design PatternsXQuery Design Patterns
XQuery Design Patterns
 
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
 
XQuery Rocks
XQuery RocksXQuery Rocks
XQuery Rocks
 
How and Where in GLORP
How and Where in GLORPHow and Where in GLORP
How and Where in GLORP
 
Headless drupal + react js Oleksandr Linyvyi
Headless drupal + react js   Oleksandr LinyvyiHeadless drupal + react js   Oleksandr Linyvyi
Headless drupal + react js Oleksandr Linyvyi
 
MongoDB .local Toronto 2019: Using Change Streams to Keep Up with Your Data
MongoDB .local Toronto 2019: Using Change Streams to Keep Up with Your DataMongoDB .local Toronto 2019: Using Change Streams to Keep Up with Your Data
MongoDB .local Toronto 2019: Using Change Streams to Keep Up with Your Data
 
9.4json
9.4json9.4json
9.4json
 
MongoDB: tips, trick and hacks
MongoDB: tips, trick and hacksMongoDB: tips, trick and hacks
MongoDB: tips, trick and hacks
 
Using MongoDB and Python
Using MongoDB and PythonUsing MongoDB and Python
Using MongoDB and Python
 
Javascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To TailJavascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To Tail
 
ETL With Cassandra Streaming Bulk Loading
ETL With Cassandra Streaming Bulk LoadingETL With Cassandra Streaming Bulk Loading
ETL With Cassandra Streaming Bulk Loading
 
Cassandra Summit 2014: Reading Cassandra SSTables Directly for Offline Data A...
Cassandra Summit 2014: Reading Cassandra SSTables Directly for Offline Data A...Cassandra Summit 2014: Reading Cassandra SSTables Directly for Offline Data A...
Cassandra Summit 2014: Reading Cassandra SSTables Directly for Offline Data A...
 
High Throughput Analytics with Cassandra & Azure
High Throughput Analytics with Cassandra & AzureHigh Throughput Analytics with Cassandra & Azure
High Throughput Analytics with Cassandra & Azure
 
Presto in Treasure Data
Presto in Treasure DataPresto in Treasure Data
Presto in Treasure Data
 
Cubes – pluggable model explained
Cubes – pluggable model explainedCubes – pluggable model explained
Cubes – pluggable model explained
 
wtf is in Java/JDK/wtf7?
wtf is in Java/JDK/wtf7?wtf is in Java/JDK/wtf7?
wtf is in Java/JDK/wtf7?
 
Python business intelligence (PyData 2012 talk)
Python business intelligence (PyData 2012 talk)Python business intelligence (PyData 2012 talk)
Python business intelligence (PyData 2012 talk)
 
Realm.io par Clement Sauvage
Realm.io par Clement SauvageRealm.io par Clement Sauvage
Realm.io par Clement Sauvage
 
Shrug2017 arcpy data_and_you
Shrug2017 arcpy data_and_youShrug2017 arcpy data_and_you
Shrug2017 arcpy data_and_you
 
Elk with Openstack
Elk with OpenstackElk with Openstack
Elk with Openstack
 

Similar to Benchx: An XQuery benchmarking web application

Web App Prototypes with Google App Engine
Web App Prototypes with Google App EngineWeb App Prototypes with Google App Engine
Web App Prototypes with Google App EngineVlad Filippov
 
Productionalizing ML : Real Experience
Productionalizing ML : Real ExperienceProductionalizing ML : Real Experience
Productionalizing ML : Real ExperienceIhor Bobak
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5Malam Team
 
Testing kubernetes and_open_shift_at_scale_20170209
Testing kubernetes and_open_shift_at_scale_20170209Testing kubernetes and_open_shift_at_scale_20170209
Testing kubernetes and_open_shift_at_scale_20170209mffiedler
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleDmytro Semenov
 
Declarative Infrastructure Tools
Declarative Infrastructure Tools Declarative Infrastructure Tools
Declarative Infrastructure Tools Yulia Shcherbachova
 
Test Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTest Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTobias Trelle
 
AWS ElasticBeanstalk and Docker
AWS ElasticBeanstalk and Docker AWS ElasticBeanstalk and Docker
AWS ElasticBeanstalk and Docker kloia
 
CON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project NashornCON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project NashornMichel Graciano
 
Getting started with spfx
Getting started with spfxGetting started with spfx
Getting started with spfxJenkins NS
 
Durable Azure Functions
Durable Azure FunctionsDurable Azure Functions
Durable Azure FunctionsPushkar Saraf
 
Java Script recruiting
Java Script recruitingJava Script recruiting
Java Script recruitingIhor Odynets
 
Boosting Sitecore Development With Sitecore Docker
Boosting Sitecore Development With Sitecore DockerBoosting Sitecore Development With Sitecore Docker
Boosting Sitecore Development With Sitecore DockerPeter Nazarov
 
JavaLand 2014 - Ankor.io Presentation
JavaLand 2014 - Ankor.io PresentationJavaLand 2014 - Ankor.io Presentation
JavaLand 2014 - Ankor.io Presentationmanolitto
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeansRyan Cuprak
 
Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...
Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...
Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...Chris Shenton
 
Ten practical ways to improve front-end performance
Ten practical ways to improve front-end performanceTen practical ways to improve front-end performance
Ten practical ways to improve front-end performanceAndrew Rota
 
How the Automation of a Benchmark Famework Keeps Pace with the Dev Cycle at I...
How the Automation of a Benchmark Famework Keeps Pace with the Dev Cycle at I...How the Automation of a Benchmark Famework Keeps Pace with the Dev Cycle at I...
How the Automation of a Benchmark Famework Keeps Pace with the Dev Cycle at I...DevOps.com
 

Similar to Benchx: An XQuery benchmarking web application (20)

Web App Prototypes with Google App Engine
Web App Prototypes with Google App EngineWeb App Prototypes with Google App Engine
Web App Prototypes with Google App Engine
 
Productionalizing ML : Real Experience
Productionalizing ML : Real ExperienceProductionalizing ML : Real Experience
Productionalizing ML : Real Experience
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5
 
Testing kubernetes and_open_shift_at_scale_20170209
Testing kubernetes and_open_shift_at_scale_20170209Testing kubernetes and_open_shift_at_scale_20170209
Testing kubernetes and_open_shift_at_scale_20170209
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
 
Declarative Infrastructure Tools
Declarative Infrastructure Tools Declarative Infrastructure Tools
Declarative Infrastructure Tools
 
Test Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTest Automation for NoSQL Databases
Test Automation for NoSQL Databases
 
[AWS Builders] Effective AWS Glue
[AWS Builders] Effective AWS Glue[AWS Builders] Effective AWS Glue
[AWS Builders] Effective AWS Glue
 
AWS ElasticBeanstalk and Docker
AWS ElasticBeanstalk and Docker AWS ElasticBeanstalk and Docker
AWS ElasticBeanstalk and Docker
 
CON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project NashornCON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project Nashorn
 
Treinamento frontend
Treinamento frontendTreinamento frontend
Treinamento frontend
 
Getting started with spfx
Getting started with spfxGetting started with spfx
Getting started with spfx
 
Durable Azure Functions
Durable Azure FunctionsDurable Azure Functions
Durable Azure Functions
 
Java Script recruiting
Java Script recruitingJava Script recruiting
Java Script recruiting
 
Boosting Sitecore Development With Sitecore Docker
Boosting Sitecore Development With Sitecore DockerBoosting Sitecore Development With Sitecore Docker
Boosting Sitecore Development With Sitecore Docker
 
JavaLand 2014 - Ankor.io Presentation
JavaLand 2014 - Ankor.io PresentationJavaLand 2014 - Ankor.io Presentation
JavaLand 2014 - Ankor.io Presentation
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeans
 
Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...
Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...
Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...
 
Ten practical ways to improve front-end performance
Ten practical ways to improve front-end performanceTen practical ways to improve front-end performance
Ten practical ways to improve front-end performance
 
How the Automation of a Benchmark Famework Keeps Pace with the Dev Cycle at I...
How the Automation of a Benchmark Famework Keeps Pace with the Dev Cycle at I...How the Automation of a Benchmark Famework Keeps Pace with the Dev Cycle at I...
How the Automation of a Benchmark Famework Keeps Pace with the Dev Cycle at I...
 

Recently uploaded

Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 

Recently uploaded (20)

Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 

Benchx: An XQuery benchmarking web application

  • 1. BenchX BaseX performance platform comparison Andy Bunce Feb 2015 BaseX Usergroup Prague
  • 2. About me ● BaseX user-group-talk XML Prague 2013 Adventures with BaseX and Web applications ● A node.js client for the BaseX server. https://github.com/apb2006/basex-node ● A quick start to run BaseX on OpenShift openshift-basex-quick-start Twitter: @apb1704 Github: apb2006
  • 3. What is BenchX? BenchX is a Web application for comparing BaseX performance across platforms and configurations. In this talk: ● Why create it? ● How does it work? ● What are the results?
  • 4. Why? BaseX is easy to install! Generally as simple as… 1. Ensure Java is installed 2. download and unzip basex.zip 3. Run basexgui or basexhttp … and you have great tools to query and transform data.
  • 5. I have tried installing BaseX on various machines around the house… ○ PC s Windows and Unix ○ Raspberry PI ○ NAS (Netgear ReadyNAS Pro) ○ Android Tablet and Phone ● How does performance compare? Out of curiosity...
  • 6. Raspberry PI - installation notes Runs Debian, costs £25 1. sudo apt-get install oracle-java8-jdk 2. wget http://files.basex.org/releases/7.9/BaseX79.zip 3. etc...
  • 7. NAS - NETGEAR ReadyNAS Pro 2 ● runs customized, old, version of Debian. ● music+photo store=plenty of metadata for XML query. 1.8 GHz Intel Atom Dual Core Processor 1 GB DDR2 SODIMM
  • 8. Android - installation notes Add a range of linux distros to your android device through a method known as ‘chroot’ 1. Install linux. Linux Deploy, on Play store worked for me 2. ssh in 3. Install Java http://www.webupd8.org/2014/03/how-to-install- oracle-java-8-in-debian.html 4. wget http://files.basex.org/releases/7.9/BaseX79.zip 5. etc 6. setup startup script for basexhttp
  • 9. Cloud - installation notes OpenShift ● A quick start to run BaseX on OpenShift Quodatum/openshift-basex-quick-start ● Use BaseX on OpenShift dirkk/openshift-basex Amazon Web Services ● Amazon Web Services EC2 setup (Paul Swennenhuis) http://www.swennenhuis.nl/basexfordummies/BaseX_for_dummies_part_2.pdf Docker ● Docker image for BaseX 8.0 (Andreas Jung) docker-basex
  • 10. Why build BenchX? ● To get some numbers (and charts) to answer “How does the performance of these platforms compare?” ● ...and because I like building web applications
  • 11. How? Run the same queries on each platform and compare times. Which queries? ● Start with the XMark queries
  • 12. XMark-An XML Benchmark Project ● The classic XQuery benchmark ● 20 Queries ● test data models auction site ● C executable to generate test data ○ factor to vary generated data size http://www.xml-benchmark.org/
  • 13. Sample XMark query (q05.xq) let $auction := collection("benchx-db") return count( for $i in $auction/site/closed_auctions/closed_auction where $i/price/text() >= 40 return $i/price )
  • 14. XMark data Factor Size 0 27kb .5 58Mb 1 116Mb 10 1.4Gb 100 11Gb
  • 15. JacobSnyder/XQuery-Benchmark ● Shell script ● Runs all XMark queries ○ for range of data sizes ● Has query timeout ○ kill run after 10mins ● tab-separated text output https://github.com/JacobSnyder/XQuery-Benchmark
  • 16. But... Unix only. No support after the numbers are generated. For viewing, managing, comparing So BenchX...
  • 17. BenchX : A Web Application
  • 23. ● Want to run against file or database ● So queries use collection("benchx-db") will use database if it exists otherwise the folder The datasource is defined by two parameters: mode: “D” or “F” meaning database or file factor: data size, floating point number used by xmlgen xmlgen /f 100 /o benchx-db/s /s 400 Data sources
  • 24. BenchX Databases Two databases are used: 1. benchx: results library and application data. ● Created if not found using data folder ● results are documents within the db 2. benchx-db: query data generated by xmlgen. created and dropped by the application. (This enables application bootstrap)
  • 26. Library XML format ● Unique ID (GUID) ● Metadata ● Environment ● Runs ○ query name ○ mode + factor ○ time benchmark.xsd
  • 29. Client Architecture (static) ● Angular SPA talks to BaseX RESTXQ using json
  • 31. Server architecture ● RESTXQ ● run queries with xquery:eval (allows timeout) ● proc:execute out to run xmlgen
  • 32. Server Architecture No good way to start long running queries from http. Request is timed out after some minutes. So Client ● creates a queue of tasks to run on server. ● Runs as sequence REST calls
  • 34. Demo ● run sample f+d 0 and 0.5 ● save ● compare
  • 35. Results - File vs db
  • 36. Results - varying the factor
  • 38. Related work ● An Analysis of the Current XQuery Benchmarks Loredana Afanasiev, Maarten Marx ● MemBeR: A Micro-benchmark Repository for XQuery Loredana Afanasie, Ioana Manolesc, Philippe Michiels ● Benchmarking XSLT Performance Michael Kay, Debbie Lockett ● MonetDb XMark Benchmark MonetDb
  • 39. The BenchX source https://github.com/Quodatum/BenchX Contributions welcome ● Results for the library ● New suites ● Bug fixes/improvements
  • 40. Future work * If you have real-life data, store this data in the systems of your choice х * Formulate real-life queries that give you similar results ✓ * Compare these measurements to get an impression on the overall performance ✓ Christian Grün Tue, 20 Jan 2015 10:43:13 -0800 @TODO ● clean up code ● xmlgen use option to split into smaller files ● create pluggable data sources per suite