evt-message_store-postgres-database 0.1.2.1 → 0.1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/database/benchmark.sh +71 -0
- data/database/benchmark_get.sql +17 -0
- data/database/benchmark_write.sql +17 -0
- data/database/write-test-message.sh +24 -2
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62245696a47206274440fad5630bf14635937d83df60edf818805213a59f177c
|
4
|
+
data.tar.gz: fc2d11f291a97d00f5958bf10955528f388bf700be64e63827108b8ba507ae49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e707f37a458c5c3f0640bbdf698c07ab76d0e2f135b0ac4ac4b59b32e7b8b4259018342da70c6064e52c96dc3c85b7d65ebb47f7ff8dbc8731ff87144a4b65d7
|
7
|
+
data.tar.gz: e2c0a7d75b4514b29454e20863f3095bcad79703f6378972df6e78e5deabe6e365b29acd0fb1fc4463c8e6df0495109aa11278cbb622bd5dbf61cd6d9f55f8b3
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
set -u
|
4
|
+
|
5
|
+
uuid=$(echo $(uuidgen) | tr '[:upper:]' '[:lower:]')
|
6
|
+
|
7
|
+
stream_name="testStream-$uuid"
|
8
|
+
if [ ! -z ${STREAM_NAME+x} ]; then
|
9
|
+
stream_name=$STREAM_NAME
|
10
|
+
fi
|
11
|
+
|
12
|
+
cycles=1000
|
13
|
+
if [ ! -z ${CYCLES+x} ]; then
|
14
|
+
cycles=$CYCLES
|
15
|
+
fi
|
16
|
+
|
17
|
+
function script_dir {
|
18
|
+
val="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
19
|
+
echo "$val"
|
20
|
+
}
|
21
|
+
|
22
|
+
base=$(script_dir)
|
23
|
+
|
24
|
+
echo
|
25
|
+
echo "Benchmark $cycles cycles (Stream Name: $stream_name)"
|
26
|
+
echo "= = ="
|
27
|
+
echo
|
28
|
+
|
29
|
+
default_name=message_store
|
30
|
+
|
31
|
+
if [ -z ${DATABASE_USER+x} ]; then
|
32
|
+
echo "(DATABASE_USER is not set)"
|
33
|
+
user=$default_name
|
34
|
+
else
|
35
|
+
user=$DATABASE_USER
|
36
|
+
fi
|
37
|
+
echo "Database user is: $user"
|
38
|
+
|
39
|
+
if [ -z ${DATABASE_NAME+x} ]; then
|
40
|
+
echo "(DATABASE_NAME is not set)"
|
41
|
+
database=$default_name
|
42
|
+
else
|
43
|
+
database=$DATABASE_NAME
|
44
|
+
fi
|
45
|
+
echo "Database name is: $database"
|
46
|
+
echo
|
47
|
+
|
48
|
+
echo "Installing benchmark scripts"
|
49
|
+
echo
|
50
|
+
|
51
|
+
psql $database -f $base/benchmark_write.sql
|
52
|
+
psql $database -f $base/benchmark_get.sql
|
53
|
+
|
54
|
+
echo
|
55
|
+
echo "Benchmarking write"
|
56
|
+
echo "- - -"
|
57
|
+
echo
|
58
|
+
|
59
|
+
psql $database -c "EXPLAIN ANALYZE SELECT benchmark_write('$stream_name'::varchar, $cycles::int);"
|
60
|
+
|
61
|
+
echo
|
62
|
+
|
63
|
+
|
64
|
+
echo
|
65
|
+
echo "Benchmarking get"
|
66
|
+
echo "- - -"
|
67
|
+
echo
|
68
|
+
|
69
|
+
psql $database -c "EXPLAIN ANALYZE SELECT benchmark_get('$stream_name'::varchar, $cycles::int);"
|
70
|
+
|
71
|
+
echo
|
@@ -0,0 +1,17 @@
|
|
1
|
+
CREATE OR REPLACE FUNCTION benchmark_get(
|
2
|
+
_stream_name varchar,
|
3
|
+
_cycles int DEFAULT 1000
|
4
|
+
)
|
5
|
+
RETURNS void
|
6
|
+
AS $$
|
7
|
+
BEGIN
|
8
|
+
FOR i IN 1.._cycles LOOP
|
9
|
+
-- RAISE NOTICE '%', i;
|
10
|
+
PERFORM * FROM get_stream_messages(_stream_name, _batch_size => 1);
|
11
|
+
END LOOP;
|
12
|
+
END;
|
13
|
+
$$ LANGUAGE plpgsql
|
14
|
+
VOLATILE;
|
15
|
+
|
16
|
+
|
17
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
CREATE OR REPLACE FUNCTION benchmark_write(
|
2
|
+
_stream_name varchar,
|
3
|
+
_cycles int DEFAULT 1000
|
4
|
+
)
|
5
|
+
RETURNS void
|
6
|
+
AS $$
|
7
|
+
BEGIN
|
8
|
+
FOR i IN 1.._cycles LOOP
|
9
|
+
-- RAISE NOTICE '%', i;
|
10
|
+
PERFORM write_message(gen_random_uuid()::varchar, _stream_name::varchar, 'SomeType'::varchar, '{"attribute": "some value"}'::jsonb, '{"metaAttribute": "some meta value"}'::jsonb);
|
11
|
+
END LOOP;
|
12
|
+
END;
|
13
|
+
$$ LANGUAGE plpgsql
|
14
|
+
VOLATILE;
|
15
|
+
|
16
|
+
|
17
|
+
|
@@ -17,10 +17,32 @@ echo "Writing $instances Messages to Stream $stream_name"
|
|
17
17
|
echo "= = ="
|
18
18
|
echo
|
19
19
|
|
20
|
+
default_name=message_store
|
21
|
+
|
22
|
+
if [ -z ${DATABASE_USER+x} ]; then
|
23
|
+
echo "(DATABASE_USER is not set)"
|
24
|
+
user=$default_name
|
25
|
+
else
|
26
|
+
user=$DATABASE_USER
|
27
|
+
fi
|
28
|
+
echo "Database user is: $user"
|
29
|
+
|
30
|
+
if [ -z ${DATABASE_NAME+x} ]; then
|
31
|
+
echo "(DATABASE_NAME is not set)"
|
32
|
+
database=$default_name
|
33
|
+
else
|
34
|
+
database=$DATABASE_NAME
|
35
|
+
fi
|
36
|
+
echo "Database name is: $database"
|
37
|
+
echo
|
38
|
+
|
39
|
+
|
20
40
|
for (( i=1; i<=instances; i++ )); do
|
21
|
-
uuid=$(uuidgen)
|
41
|
+
uuid=$(echo $(uuidgen) | tr '[:upper:]' '[:lower:]')
|
42
|
+
|
22
43
|
echo "Instance: $i, Message ID: $uuid"
|
23
|
-
|
44
|
+
|
45
|
+
psql $database -c "SELECT write_message('$uuid'::varchar, '$stream_name'::varchar, 'SomeType'::varchar, '{\"attribute\": \"some value\"}'::jsonb, '{\"metaAttribute\": \"some meta value\"}'::jsonb);" > /dev/null
|
24
46
|
done
|
25
47
|
|
26
48
|
echo
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evt-message_store-postgres-database
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Eventide Project
|
8
8
|
autorequire:
|
9
9
|
bindir: scripts
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: " "
|
14
14
|
email: opensource@eventide-project.org
|
@@ -22,6 +22,9 @@ executables:
|
|
22
22
|
extensions: []
|
23
23
|
extra_rdoc_files: []
|
24
24
|
files:
|
25
|
+
- database/benchmark.sh
|
26
|
+
- database/benchmark_get.sql
|
27
|
+
- database/benchmark_write.sql
|
25
28
|
- database/clear-events-table.sh
|
26
29
|
- database/extensions.sql
|
27
30
|
- database/functions/category.sql
|