@@ -5,7 +5,7 @@ A platform dedicated to ease comparison of databases:
5
5
6
6
a) allow testing compatibility of SQL snippets across many different databases and versions
7
7
8
- b) allow doing full-fledged performance testing, comparing results across many db versions
8
+ b) allow doing full-fledged performance testing, comparing resource usage across many db versions
9
9
10
10
11
11
** * Work In Progress ** *
@@ -55,7 +55,6 @@ NB: if you don't have a bash shell interpreter on your host computer, look at th
55
55
the host computer, please change variables COMPOSE_WEB_LISTEN_PORT_HTTP and COMPOSE_WEB_LISTEN_PORT_HTTPS in file
56
56
docker/.env
57
57
58
-
59
58
### Usage
60
59
61
60
Example: executing the sql statement ` select current_date ` in parallel on all databases:
@@ -130,15 +129,46 @@ After starting the containers via `./bin/stack.sh build`, you can:
130
129
* NB* : if the ` stack.sh ` command fails, you can use ` docker ` and ` docker-compose ` commands for troubleshooting.
131
130
See the section 'Alternative commands to stack.sh' below for examples.
132
131
133
-
134
132
### Maintenance
135
133
136
134
3 scripts are provided in the top-level ` bin ` folder to help keeping disk space usage under control
137
135
136
+ ### How does this work?
137
+
138
+ The command-line tool ` dbconsole ` , as well as the web interface are built in php, using the Symfony framework.
139
+
140
+ Docker is used to run the app:
141
+
142
+ - each db instance runs in a dedicated container (except SQLite)
143
+ - one container runs the web interface
144
+ - one container runs the command-line tools which connect to the databases
145
+ - one container runs Adminer, a separate, self-contained db administration app, also written in php
146
+
147
+ Docker-compose is used to orchestrate the execution of the containers, ie. start, stop and connect them.
148
+
149
+ The data files and logs of all the database instances are stored on the disk of the host computer, and mounted as
150
+ volumes into the containers running the databases.
151
+
152
+ All the interactions between ` dbconsole ` and the databases happen, at the moment, through execution of the native
153
+ command-line database client (` psql ` , ` sqlcmd ` , etc...). Those clients are executed in parallel as independent processes
154
+ from the ` dbconsole ` .
155
+
156
+ This design has the following advantages:
157
+
158
+ - parallel execution of queries across all database instances to reduce the total execution time
159
+ - it does not let the warts of php database-connectors influence the results of query execution
160
+ - it can easily expand to run queries on multiple database types, even those not supported by php
161
+
162
+ On the other hand it comes with some serious drawbacks as well, notably:
163
+
164
+ - parsing the data sets which result from a SELECT query from the output of a command-line tool is an exercise in pointlessness
165
+
166
+ More details about advanced use cases are given in the section below.
167
+
138
168
139
169
## FAQ
140
170
141
- See the [ FAQ] ( ./doc/FAQ.md ) for more details
171
+ See the separate [ FAQ] ( ./doc/FAQ.md ) document.
142
172
143
173
144
174
## Alternative commands to stack.sh
0 commit comments