datahike-browser-tests 1.0.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.
- package/.circleci/config.yml +405 -0
- package/.circleci/scripts/gen_ci.clj +194 -0
- package/.cirrus.yml +60 -0
- package/.clj-kondo/babashka/sci/config.edn +1 -0
- package/.clj-kondo/babashka/sci/sci/core.clj +9 -0
- package/.clj-kondo/config.edn +95 -0
- package/.dir-locals.el +2 -0
- package/.github/FUNDING.yml +3 -0
- package/.github/ISSUE_TEMPLATE/1-bug-report.yml +68 -0
- package/.github/ISSUE_TEMPLATE/2-feature-request.yml +28 -0
- package/.github/ISSUE_TEMPLATE/config.yml +6 -0
- package/.github/pull_request_template.md +24 -0
- package/.github/workflows/native-image.yml +84 -0
- package/LICENSE +203 -0
- package/README.md +273 -0
- package/bb/deps.edn +9 -0
- package/bb/resources/github-fingerprints +3 -0
- package/bb/resources/native-image-tests/run-bb-pod-tests.clj +162 -0
- package/bb/resources/native-image-tests/run-libdatahike-tests +12 -0
- package/bb/resources/native-image-tests/run-native-image-tests +74 -0
- package/bb/resources/native-image-tests/run-python-tests +22 -0
- package/bb/resources/native-image-tests/testconfig.attr-refs.edn +6 -0
- package/bb/resources/native-image-tests/testconfig.edn +5 -0
- package/bb/resources/template/.settings/org.eclipse.jdt.apt.core.prefs +2 -0
- package/bb/resources/template/.settings/org.eclipse.jdt.core.prefs +9 -0
- package/bb/resources/template/.settings/org.eclipse.m2e.core.prefs +4 -0
- package/bb/resources/template/pom.xml +22 -0
- package/bb/src/tools/build.clj +132 -0
- package/bb/src/tools/clj_kondo.clj +32 -0
- package/bb/src/tools/deploy.clj +26 -0
- package/bb/src/tools/examples.clj +19 -0
- package/bb/src/tools/npm.clj +100 -0
- package/bb/src/tools/python.clj +14 -0
- package/bb/src/tools/release.clj +94 -0
- package/bb/src/tools/test.clj +148 -0
- package/bb/src/tools/version.clj +47 -0
- package/bb.edn +269 -0
- package/benchmark/src/benchmark/cli.clj +195 -0
- package/benchmark/src/benchmark/compare.clj +157 -0
- package/benchmark/src/benchmark/config.clj +316 -0
- package/benchmark/src/benchmark/measure.clj +187 -0
- package/benchmark/src/benchmark/store.clj +190 -0
- package/benchmark/test/benchmark/measure_test.clj +156 -0
- package/build.clj +30 -0
- package/config.edn +49 -0
- package/deps.edn +138 -0
- package/dev/sandbox.clj +82 -0
- package/dev/sandbox.cljs +127 -0
- package/dev/sandbox_benchmarks.clj +27 -0
- package/dev/sandbox_client.clj +87 -0
- package/dev/sandbox_transact_bench.clj +109 -0
- package/dev/user.clj +79 -0
- package/doc/README.md +96 -0
- package/doc/adl/README.md +6 -0
- package/doc/adl/adr-000-adr.org +28 -0
- package/doc/adl/adr-001-attribute-references.org +15 -0
- package/doc/adl/adr-002-build-tooling.org +54 -0
- package/doc/adl/adr-003-db-meta-data.md +52 -0
- package/doc/adl/adr-004-github-flow.md +40 -0
- package/doc/adl/adr-XYZ-template.md +30 -0
- package/doc/adl/index.org +3 -0
- package/doc/assets/datahike-logo.svg +3 -0
- package/doc/assets/datahiking-invoice.org +85 -0
- package/doc/assets/hhtree2.png +0 -0
- package/doc/assets/network_topology.svg +624 -0
- package/doc/assets/perf.png +0 -0
- package/doc/assets/schema_mindmap.mm +132 -0
- package/doc/assets/schema_mindmap.svg +970 -0
- package/doc/assets/temporal_index.mm +74 -0
- package/doc/backend-development.md +78 -0
- package/doc/bb-pod.md +89 -0
- package/doc/benchmarking.md +360 -0
- package/doc/bindings/edn-conversion.md +383 -0
- package/doc/cli.md +162 -0
- package/doc/cljdoc.edn +27 -0
- package/doc/cljs-support.md +133 -0
- package/doc/config.md +406 -0
- package/doc/contributing.md +114 -0
- package/doc/datalog-vs-sql.md +210 -0
- package/doc/datomic_differences.md +109 -0
- package/doc/development/pull-api-ns.md +186 -0
- package/doc/development/pull-frame-state-diagram.jpg +0 -0
- package/doc/distributed.md +566 -0
- package/doc/entity_spec.md +92 -0
- package/doc/gc.md +273 -0
- package/doc/java-api.md +808 -0
- package/doc/javascript-api.md +421 -0
- package/doc/libdatahike.md +86 -0
- package/doc/logging_and_error_handling.md +43 -0
- package/doc/norms.md +66 -0
- package/doc/schema-migration.md +85 -0
- package/doc/schema.md +287 -0
- package/doc/storage-backends.md +363 -0
- package/doc/store-id-refactoring.md +596 -0
- package/doc/time_variance.md +325 -0
- package/doc/unstructured.md +167 -0
- package/doc/versioning.md +261 -0
- package/examples/basic/README.md +19 -0
- package/examples/basic/deps.edn +6 -0
- package/examples/basic/docker-compose.yml +13 -0
- package/examples/basic/src/examples/core.clj +60 -0
- package/examples/basic/src/examples/schema.clj +155 -0
- package/examples/basic/src/examples/store.clj +60 -0
- package/examples/basic/src/examples/time_travel.clj +185 -0
- package/examples/java/.settings/org.eclipse.core.resources.prefs +3 -0
- package/examples/java/.settings/org.eclipse.jdt.apt.core.prefs +2 -0
- package/examples/java/.settings/org.eclipse.jdt.core.prefs +9 -0
- package/examples/java/.settings/org.eclipse.m2e.core.prefs +4 -0
- package/examples/java/README.md +162 -0
- package/examples/java/pom.xml +62 -0
- package/examples/java/src/main/java/examples/QuickStart.java +115 -0
- package/examples/java/src/main/java/examples/SchemaExample.java +148 -0
- package/examples/java/src/main/java/examples/TimeTravelExample.java +121 -0
- package/flake.lock +27 -0
- package/flake.nix +27 -0
- package/http-server/datahike/http/middleware.clj +75 -0
- package/http-server/datahike/http/server.clj +269 -0
- package/java/src/datahike/java/Database.java +274 -0
- package/java/src/datahike/java/Datahike.java +281 -0
- package/java/src/datahike/java/DatahikeGeneratedTest.java +349 -0
- package/java/src/datahike/java/DatahikeTest.java +370 -0
- package/java/src/datahike/java/EDN.java +170 -0
- package/java/src/datahike/java/IEntity.java +11 -0
- package/java/src/datahike/java/Keywords.java +161 -0
- package/java/src/datahike/java/SchemaFlexibility.java +52 -0
- package/java/src/datahike/java/Util.java +219 -0
- package/karma.conf.js +19 -0
- package/libdatahike/compile-cpp +7 -0
- package/libdatahike/src/datahike/impl/LibDatahikeBase.java +203 -0
- package/libdatahike/src/datahike/impl/libdatahike.clj +59 -0
- package/libdatahike/src/test_cpp.cpp +61 -0
- package/npm-package/PUBLISHING.md +140 -0
- package/npm-package/README.md +226 -0
- package/npm-package/package.template.json +34 -0
- package/npm-package/test-isomorphic.ts +281 -0
- package/npm-package/test.js +557 -0
- package/npm-package/typescript-test.ts +70 -0
- package/package.json +16 -0
- package/pydatahike/README.md +569 -0
- package/pydatahike/pyproject.toml +91 -0
- package/pydatahike/setup.py +42 -0
- package/pydatahike/src/datahike/__init__.py +134 -0
- package/pydatahike/src/datahike/_native.py +250 -0
- package/pydatahike/src/datahike/_version.py +2 -0
- package/pydatahike/src/datahike/database.py +722 -0
- package/pydatahike/src/datahike/edn.py +311 -0
- package/pydatahike/src/datahike/py.typed +0 -0
- package/pydatahike/tests/conftest.py +17 -0
- package/pydatahike/tests/test_basic.py +170 -0
- package/pydatahike/tests/test_database.py +51 -0
- package/pydatahike/tests/test_edn_conversion.py +299 -0
- package/pydatahike/tests/test_query.py +99 -0
- package/pydatahike/tests/test_schema.py +55 -0
- package/resources/clj-kondo.exports/io.replikativ/datahike/config.edn +5 -0
- package/resources/example_server.edn +4 -0
- package/shadow-cljs.edn +56 -0
- package/src/data_readers.clj +7 -0
- package/src/datahike/api/impl.cljc +176 -0
- package/src/datahike/api/specification.cljc +633 -0
- package/src/datahike/api/types.cljc +261 -0
- package/src/datahike/api.cljc +41 -0
- package/src/datahike/array.cljc +99 -0
- package/src/datahike/cli.clj +166 -0
- package/src/datahike/cljs.cljs +6 -0
- package/src/datahike/codegen/cli.clj +406 -0
- package/src/datahike/codegen/clj_kondo.clj +291 -0
- package/src/datahike/codegen/java.clj +403 -0
- package/src/datahike/codegen/naming.cljc +33 -0
- package/src/datahike/codegen/native.clj +559 -0
- package/src/datahike/codegen/pod.clj +488 -0
- package/src/datahike/codegen/python.clj +838 -0
- package/src/datahike/codegen/report.clj +55 -0
- package/src/datahike/codegen/typescript.clj +262 -0
- package/src/datahike/codegen/validation.clj +145 -0
- package/src/datahike/config.cljc +294 -0
- package/src/datahike/connections.cljc +16 -0
- package/src/datahike/connector.cljc +265 -0
- package/src/datahike/constants.cljc +142 -0
- package/src/datahike/core.cljc +297 -0
- package/src/datahike/datom.cljc +459 -0
- package/src/datahike/db/interface.cljc +119 -0
- package/src/datahike/db/search.cljc +305 -0
- package/src/datahike/db/transaction.cljc +937 -0
- package/src/datahike/db/utils.cljc +338 -0
- package/src/datahike/db.cljc +956 -0
- package/src/datahike/experimental/unstructured.cljc +126 -0
- package/src/datahike/experimental/versioning.cljc +172 -0
- package/src/datahike/externs.js +31 -0
- package/src/datahike/gc.cljc +69 -0
- package/src/datahike/http/client.clj +188 -0
- package/src/datahike/http/writer.clj +79 -0
- package/src/datahike/impl/entity.cljc +218 -0
- package/src/datahike/index/interface.cljc +93 -0
- package/src/datahike/index/persistent_set.cljc +469 -0
- package/src/datahike/index/utils.cljc +44 -0
- package/src/datahike/index.cljc +32 -0
- package/src/datahike/js/api.cljs +172 -0
- package/src/datahike/js/api_macros.clj +22 -0
- package/src/datahike/js.cljs +163 -0
- package/src/datahike/json.cljc +209 -0
- package/src/datahike/lru.cljc +146 -0
- package/src/datahike/migrate.clj +39 -0
- package/src/datahike/norm/norm.clj +245 -0
- package/src/datahike/online_gc.cljc +252 -0
- package/src/datahike/pod.clj +155 -0
- package/src/datahike/pull_api.cljc +325 -0
- package/src/datahike/query.cljc +1945 -0
- package/src/datahike/query_stats.cljc +88 -0
- package/src/datahike/readers.cljc +62 -0
- package/src/datahike/remote.cljc +218 -0
- package/src/datahike/schema.cljc +228 -0
- package/src/datahike/schema_cache.cljc +42 -0
- package/src/datahike/spec.cljc +101 -0
- package/src/datahike/store.cljc +80 -0
- package/src/datahike/tools.cljc +308 -0
- package/src/datahike/transit.cljc +80 -0
- package/src/datahike/writer.cljc +239 -0
- package/src/datahike/writing.cljc +362 -0
- package/src/deps.cljs +1 -0
- package/src-hitchhiker-tree/datahike/index/hitchhiker_tree/insert.cljc +76 -0
- package/src-hitchhiker-tree/datahike/index/hitchhiker_tree/upsert.cljc +128 -0
- package/src-hitchhiker-tree/datahike/index/hitchhiker_tree.cljc +213 -0
- package/test/datahike/backward_compatibility_test/src/backward_test.clj +37 -0
- package/test/datahike/integration_test/config_record_file_test.clj +14 -0
- package/test/datahike/integration_test/config_record_test.clj +14 -0
- package/test/datahike/integration_test/depr_config_uri_test.clj +15 -0
- package/test/datahike/integration_test/return_map_test.clj +62 -0
- package/test/datahike/integration_test.cljc +67 -0
- package/test/datahike/norm/norm_test.clj +124 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/001-a1-example.edn +5 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/002-a2-example.edn +5 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/003-tx-fn-test.edn +1 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/004-tx-data-and-tx-fn-test.edn +5 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/01-transact-basic-characters.edn +2 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/02 add occupation.edn +5 -0
- package/test/datahike/norm/resources/naming-and-sorting-test/checksums.edn +12 -0
- package/test/datahike/norm/resources/simple-test/001-a1-example.edn +5 -0
- package/test/datahike/norm/resources/simple-test/002-a2-example.edn +5 -0
- package/test/datahike/norm/resources/simple-test/checksums.edn +4 -0
- package/test/datahike/norm/resources/tx-data-and-tx-fn-test/first/001-a1-example.edn +5 -0
- package/test/datahike/norm/resources/tx-data-and-tx-fn-test/first/002-a2-example.edn +5 -0
- package/test/datahike/norm/resources/tx-data-and-tx-fn-test/first/003-tx-fn-test.edn +1 -0
- package/test/datahike/norm/resources/tx-data-and-tx-fn-test/first/checksums.edn +6 -0
- package/test/datahike/norm/resources/tx-data-and-tx-fn-test/second/004-tx-data-and-tx-fn-test.edn +5 -0
- package/test/datahike/norm/resources/tx-data-and-tx-fn-test/second/checksums.edn +2 -0
- package/test/datahike/norm/resources/tx-fn-test/first/001-a1-example.edn +5 -0
- package/test/datahike/norm/resources/tx-fn-test/first/002-a2-example.edn +5 -0
- package/test/datahike/norm/resources/tx-fn-test/first/checksums.edn +4 -0
- package/test/datahike/norm/resources/tx-fn-test/second/003-tx-fn-test.edn +1 -0
- package/test/datahike/norm/resources/tx-fn-test/second/checksums.edn +2 -0
- package/test/datahike/test/api_test.cljc +895 -0
- package/test/datahike/test/array_test.cljc +40 -0
- package/test/datahike/test/attribute_refs/datoms_test.cljc +140 -0
- package/test/datahike/test/attribute_refs/db_test.cljc +42 -0
- package/test/datahike/test/attribute_refs/differences_test.cljc +515 -0
- package/test/datahike/test/attribute_refs/entity_test.cljc +89 -0
- package/test/datahike/test/attribute_refs/pull_api_test.cljc +320 -0
- package/test/datahike/test/attribute_refs/query_find_specs_test.cljc +59 -0
- package/test/datahike/test/attribute_refs/query_fns_test.cljc +130 -0
- package/test/datahike/test/attribute_refs/query_interop_test.cljc +47 -0
- package/test/datahike/test/attribute_refs/query_not_test.cljc +193 -0
- package/test/datahike/test/attribute_refs/query_or_test.cljc +137 -0
- package/test/datahike/test/attribute_refs/query_pull_test.cljc +156 -0
- package/test/datahike/test/attribute_refs/query_rules_test.cljc +176 -0
- package/test/datahike/test/attribute_refs/query_test.cljc +241 -0
- package/test/datahike/test/attribute_refs/temporal_search.cljc +22 -0
- package/test/datahike/test/attribute_refs/transact_test.cljc +220 -0
- package/test/datahike/test/attribute_refs/utils.cljc +128 -0
- package/test/datahike/test/cache_test.cljc +38 -0
- package/test/datahike/test/components_test.cljc +92 -0
- package/test/datahike/test/config_test.cljc +158 -0
- package/test/datahike/test/core_test.cljc +105 -0
- package/test/datahike/test/datom_test.cljc +44 -0
- package/test/datahike/test/db_test.cljc +54 -0
- package/test/datahike/test/entity_spec_test.cljc +159 -0
- package/test/datahike/test/entity_test.cljc +103 -0
- package/test/datahike/test/explode_test.cljc +143 -0
- package/test/datahike/test/filter_test.cljc +75 -0
- package/test/datahike/test/gc_test.cljc +159 -0
- package/test/datahike/test/http/server_test.clj +192 -0
- package/test/datahike/test/http/writer_test.clj +86 -0
- package/test/datahike/test/ident_test.cljc +32 -0
- package/test/datahike/test/index_test.cljc +345 -0
- package/test/datahike/test/insert.cljc +125 -0
- package/test/datahike/test/java_bindings_test.clj +6 -0
- package/test/datahike/test/listen_test.cljc +41 -0
- package/test/datahike/test/lookup_refs_test.cljc +266 -0
- package/test/datahike/test/lru_test.cljc +27 -0
- package/test/datahike/test/migrate_test.clj +297 -0
- package/test/datahike/test/model/core.cljc +376 -0
- package/test/datahike/test/model/invariant.cljc +142 -0
- package/test/datahike/test/model/rng.cljc +82 -0
- package/test/datahike/test/model_test.clj +217 -0
- package/test/datahike/test/nodejs_test.cljs +262 -0
- package/test/datahike/test/online_gc_test.cljc +475 -0
- package/test/datahike/test/pod_test.clj +369 -0
- package/test/datahike/test/pull_api_test.cljc +474 -0
- package/test/datahike/test/purge_test.cljc +144 -0
- package/test/datahike/test/query_aggregates_test.cljc +101 -0
- package/test/datahike/test/query_find_specs_test.cljc +52 -0
- package/test/datahike/test/query_fns_test.cljc +523 -0
- package/test/datahike/test/query_interop_test.cljc +47 -0
- package/test/datahike/test/query_not_test.cljc +189 -0
- package/test/datahike/test/query_or_test.cljc +158 -0
- package/test/datahike/test/query_pull_test.cljc +147 -0
- package/test/datahike/test/query_rules_test.cljc +248 -0
- package/test/datahike/test/query_stats_test.cljc +218 -0
- package/test/datahike/test/query_test.cljc +984 -0
- package/test/datahike/test/schema_test.cljc +424 -0
- package/test/datahike/test/specification_test.cljc +30 -0
- package/test/datahike/test/store_test.cljc +78 -0
- package/test/datahike/test/stress_test.cljc +57 -0
- package/test/datahike/test/time_variance_test.cljc +518 -0
- package/test/datahike/test/tools_test.clj +134 -0
- package/test/datahike/test/transact_test.cljc +518 -0
- package/test/datahike/test/tuples_test.cljc +564 -0
- package/test/datahike/test/unstructured_test.cljc +291 -0
- package/test/datahike/test/upsert_impl_test.cljc +205 -0
- package/test/datahike/test/upsert_test.cljc +363 -0
- package/test/datahike/test/utils.cljc +110 -0
- package/test/datahike/test/validation_test.cljc +48 -0
- package/test/datahike/test/versioning_test.cljc +56 -0
- package/test/datahike/test.cljc +66 -0
- package/tests.edn +24 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
(ns benchmark.measure-test
|
|
2
|
+
(:require [clojure.test :refer [is deftest testing]]
|
|
3
|
+
[benchmark.measure :as b]
|
|
4
|
+
[benchmark.config :as c]))
|
|
5
|
+
|
|
6
|
+
(def options {:output-format "edn"
|
|
7
|
+
:db-samples 1
|
|
8
|
+
:data-types [:int :str]
|
|
9
|
+
:iterations 1,
|
|
10
|
+
:data-found-opts :all
|
|
11
|
+
:tx-entity-counts [1 10]
|
|
12
|
+
:index :all
|
|
13
|
+
:backend :all
|
|
14
|
+
:history :all
|
|
15
|
+
:schema :all
|
|
16
|
+
:tag #{test}
|
|
17
|
+
:function :all
|
|
18
|
+
:query :all
|
|
19
|
+
:cache [0]
|
|
20
|
+
:db-entity-counts [1 10]})
|
|
21
|
+
|
|
22
|
+
;; -> (count configs) = (count cache) (count index) (count backend) (count history) (count schema) = 16
|
|
23
|
+
;; -> (count common-loop) = (* (count configs) db-samples iterations (count db-entity-counts)) = 32
|
|
24
|
+
|
|
25
|
+
(deftest transaction-test
|
|
26
|
+
(is (= 64
|
|
27
|
+
; (* (count common-loop) (count tx-entities-count))
|
|
28
|
+
; (* 32 2 )
|
|
29
|
+
(count (b/get-measurements (assoc options :function :transaction))))))
|
|
30
|
+
|
|
31
|
+
(deftest query-test
|
|
32
|
+
(testing "single query"
|
|
33
|
+
(is (= 128
|
|
34
|
+
; (* (count common-loop) (count :data-types) (count :data-found-opts?))
|
|
35
|
+
; (* 32 2 2 )
|
|
36
|
+
(count (b/get-measurements (assoc options :function :query
|
|
37
|
+
:query :simple-query))))))
|
|
38
|
+
(testing "all queries"
|
|
39
|
+
(is (= 1728
|
|
40
|
+
; (* (count common-loop) (+ (* (count var-queries) (count :data-types) (count :data-found-opts?))))
|
|
41
|
+
; (* (count non-var-queries) (count :data-types))
|
|
42
|
+
; (count aggregate-queries)
|
|
43
|
+
; (* (count cache-check-queries) (count :data-types) (count :data-found-opts?))
|
|
44
|
+
; (* 32 (+ (* 6 2 2)
|
|
45
|
+
; (* 8 2)
|
|
46
|
+
; 6
|
|
47
|
+
; (* 2 2 2))
|
|
48
|
+
; (* (32 54))
|
|
49
|
+
(count (b/get-measurements (assoc options :function :query
|
|
50
|
+
:cache [10])))))))
|
|
51
|
+
|
|
52
|
+
(deftest connection-test
|
|
53
|
+
(let [measurements (b/get-measurements (assoc options :function :connection))]
|
|
54
|
+
(is (= #{:mean :median :std :min :max :count :observations}
|
|
55
|
+
(set (keys (:time (first measurements))))))
|
|
56
|
+
(is (= 1
|
|
57
|
+
(get-in (first measurements) [:time :count])))
|
|
58
|
+
(is (= 32
|
|
59
|
+
; (count common-loop)
|
|
60
|
+
(count measurements)))))
|
|
61
|
+
|
|
62
|
+
(deftest preset-configs
|
|
63
|
+
(is (= '({:db-datoms 4
|
|
64
|
+
:db-entities 1
|
|
65
|
+
:dh-config {:backend :mem
|
|
66
|
+
:search-cache-size 0
|
|
67
|
+
:store-cache-size 1
|
|
68
|
+
:index :datahike.index/persistent-set
|
|
69
|
+
:keep-history? false
|
|
70
|
+
:schema-flexibility :write}
|
|
71
|
+
:function :connection}
|
|
72
|
+
{:db-datoms 40
|
|
73
|
+
:db-entities 10
|
|
74
|
+
:dh-config {:backend :mem
|
|
75
|
+
:search-cache-size 0
|
|
76
|
+
:store-cache-size 1
|
|
77
|
+
:index :datahike.index/persistent-set
|
|
78
|
+
:keep-history? false
|
|
79
|
+
:schema-flexibility :write}
|
|
80
|
+
:function :connection})
|
|
81
|
+
(map :context (b/get-measurements (assoc options :config-name "mem-set"
|
|
82
|
+
:function :connection)))))
|
|
83
|
+
(is (= '({:db-datoms 4
|
|
84
|
+
:db-entities 1
|
|
85
|
+
:dh-config {:backend :mem
|
|
86
|
+
:search-cache-size 0
|
|
87
|
+
:store-cache-size 1
|
|
88
|
+
:index :datahike.index/persistent-set
|
|
89
|
+
:keep-history? false
|
|
90
|
+
:schema-flexibility :write}
|
|
91
|
+
:function :connection}
|
|
92
|
+
{:db-datoms 40
|
|
93
|
+
:db-entities 10
|
|
94
|
+
:dh-config {:backend :mem
|
|
95
|
+
:search-cache-size 0
|
|
96
|
+
:store-cache-size 1
|
|
97
|
+
:index :datahike.index/persistent-set
|
|
98
|
+
:keep-history? false
|
|
99
|
+
:schema-flexibility :write}
|
|
100
|
+
:function :connection}
|
|
101
|
+
{:db-datoms 4
|
|
102
|
+
:db-entities 1
|
|
103
|
+
:dh-config {:backend :mem
|
|
104
|
+
:search-cache-size 0
|
|
105
|
+
:store-cache-size 1
|
|
106
|
+
:index :datahike.index/hitchhiker-tree
|
|
107
|
+
:keep-history? false
|
|
108
|
+
:schema-flexibility :write}
|
|
109
|
+
:function :connection}
|
|
110
|
+
{:db-datoms 40
|
|
111
|
+
:db-entities 10
|
|
112
|
+
:dh-config {:backend :mem
|
|
113
|
+
:search-cache-size 0
|
|
114
|
+
:store-cache-size 1
|
|
115
|
+
:index :datahike.index/hitchhiker-tree
|
|
116
|
+
:keep-history? false
|
|
117
|
+
:schema-flexibility :write}
|
|
118
|
+
:function :connection}
|
|
119
|
+
{:db-datoms 4
|
|
120
|
+
:db-entities 1
|
|
121
|
+
:dh-config {:backend :file
|
|
122
|
+
:search-cache-size 0
|
|
123
|
+
:store-cache-size 1
|
|
124
|
+
:index :datahike.index/persistent-set
|
|
125
|
+
:keep-history? false
|
|
126
|
+
:schema-flexibility :write}
|
|
127
|
+
:function :connection}
|
|
128
|
+
{:db-datoms 40
|
|
129
|
+
:db-entities 10
|
|
130
|
+
:dh-config {:backend :file
|
|
131
|
+
:search-cache-size 0
|
|
132
|
+
:store-cache-size 1
|
|
133
|
+
:index :datahike.index/persistent-set
|
|
134
|
+
:keep-history? false
|
|
135
|
+
:schema-flexibility :write}
|
|
136
|
+
:function :connection}
|
|
137
|
+
{:db-datoms 4
|
|
138
|
+
:db-entities 1
|
|
139
|
+
:dh-config {:backend :file
|
|
140
|
+
:search-cache-size 0
|
|
141
|
+
:store-cache-size 1
|
|
142
|
+
:index :datahike.index/hitchhiker-tree
|
|
143
|
+
:keep-history? false
|
|
144
|
+
:schema-flexibility :write}
|
|
145
|
+
:function :connection}
|
|
146
|
+
{:db-datoms 40
|
|
147
|
+
:db-entities 10
|
|
148
|
+
:dh-config {:backend :file
|
|
149
|
+
:search-cache-size 0
|
|
150
|
+
:store-cache-size 1
|
|
151
|
+
:index :datahike.index/hitchhiker-tree
|
|
152
|
+
:keep-history? false
|
|
153
|
+
:schema-flexibility :write}
|
|
154
|
+
:function :connection})
|
|
155
|
+
(map :context (b/get-measurements (assoc options :function :connection)
|
|
156
|
+
(vals c/named-db-configs))))))
|
package/build.clj
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
(ns build
|
|
2
|
+
(:refer-clojure :exclude [compile])
|
|
3
|
+
(:require [clojure.edn :as edn]
|
|
4
|
+
[clojure.tools.build.api :as b]))
|
|
5
|
+
|
|
6
|
+
(def class-dir "target/classes")
|
|
7
|
+
(def basis (b/create-basis {:project "deps.edn"}))
|
|
8
|
+
|
|
9
|
+
(defn compile-java
|
|
10
|
+
[_]
|
|
11
|
+
(b/javac {:src-dirs ["java"]
|
|
12
|
+
:class-dir class-dir
|
|
13
|
+
:basis basis
|
|
14
|
+
:javac-opts ["--release" "8"
|
|
15
|
+
"-Xlint:deprecation"]}))
|
|
16
|
+
|
|
17
|
+
(defn javadoc
|
|
18
|
+
"Generate Javadoc for the Java API.
|
|
19
|
+
Output will be in target/javadoc and automatically included in the jar."
|
|
20
|
+
[_]
|
|
21
|
+
(b/javadoc {:src-dirs ["java/src"]
|
|
22
|
+
:output-dir "target/javadoc"
|
|
23
|
+
:javadoc-opts ["-public"
|
|
24
|
+
"-Xdoclint:none"
|
|
25
|
+
"-windowtitle" "Datahike Java API"
|
|
26
|
+
"-doctitle" "Datahike Java API Documentation"
|
|
27
|
+
"-link" "https://docs.oracle.com/javase/8/docs/api/"
|
|
28
|
+
"-link" "https://clojure.github.io/clojure/"]})
|
|
29
|
+
(println "Javadoc generated in target/javadoc")
|
|
30
|
+
(println "Javadoc will be automatically published to javadoc.io when released to Clojars"))
|
package/config.edn
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{:org "replikativ"
|
|
2
|
+
:lib "datahike"
|
|
3
|
+
:version {:major 0
|
|
4
|
+
:minor 7}
|
|
5
|
+
:git-url "git@github.com:replikativ/datahike.git"
|
|
6
|
+
|
|
7
|
+
:pom-template "./bb/resources/template/pom.xml"
|
|
8
|
+
:scm {:connection "scm:git:git@github.com:replikativ/datahike.git"
|
|
9
|
+
:developerConnection "scm:git:git@github.com:replikativ/datahike.git"
|
|
10
|
+
:url "https://github.com/replikativ/datahike"}
|
|
11
|
+
|
|
12
|
+
:build {:clj {:src-dirs ["src" "src-kabel" "src-hitchhiker-tree"]
|
|
13
|
+
:resource-dir "resources"
|
|
14
|
+
:java-src-dirs ["java"]
|
|
15
|
+
:target-dir "target"
|
|
16
|
+
:class-dir "target/classes"
|
|
17
|
+
:deps-file "deps.edn"
|
|
18
|
+
:jar-pattern "{{repo.lib}}-{{version-str}}.jar"
|
|
19
|
+
:lib org.replikativ/datahike}
|
|
20
|
+
:http-server-clj {:src-dirs ["src" "http-server" "resources"]
|
|
21
|
+
:java-src-dirs ["java"]
|
|
22
|
+
:target-dir "target-http-server"
|
|
23
|
+
:class-dir "target-http-server/classes"
|
|
24
|
+
:deps-file "deps.edn"
|
|
25
|
+
:jar-pattern "{{repo.lib}}-http-server-{{version-str}}.jar"
|
|
26
|
+
:aliases [:http-server]
|
|
27
|
+
:main datahike.http.server
|
|
28
|
+
:lib org.replikativ/datahike-http-server}
|
|
29
|
+
:native {:src-dirs ["src" "libdatahike/src"]
|
|
30
|
+
:java-src-dirs ["java"]
|
|
31
|
+
:resource-dir "resources"
|
|
32
|
+
:target-dir "target"
|
|
33
|
+
:class-dir "target/classes"
|
|
34
|
+
:deps-file "deps.edn"
|
|
35
|
+
:aliases [:libdatahike]
|
|
36
|
+
:jar-pattern "{{repo.lib}}-{{version-str}}-native-shared-library.jar"
|
|
37
|
+
:main datahike.cli
|
|
38
|
+
;; native build
|
|
39
|
+
:artifact "libdatahike.zip"
|
|
40
|
+
:project-target-dir "libdatahike/target"
|
|
41
|
+
:project-name "libdatahike"
|
|
42
|
+
:class-path "libdatahike/src"
|
|
43
|
+
:java-interface "libdatahike/src/datahike/impl/LibDatahike.java"}}
|
|
44
|
+
|
|
45
|
+
:release {:native-cli {:target-dir "."
|
|
46
|
+
:binary-name "dthk"
|
|
47
|
+
:zip-pattern "{{lib}}-{{version}}-{{platform}}-{{arch}}.zip"}
|
|
48
|
+
:libdatahike {:target-dir "libdatahike/target"
|
|
49
|
+
:zip-pattern "{{lib}}-{{version}}-{{platform}}-{{arch}}.zip"}}}
|
package/deps.edn
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
{:deps {org.clojure/clojure {:mvn/version "1.11.1"}
|
|
2
|
+
org.replikativ/hasch {:mvn/version "0.3.96"
|
|
3
|
+
:exclusions [org.clojure/clojurescript]}
|
|
4
|
+
org.replikativ/konserve {:mvn/version "0.9.345"
|
|
5
|
+
:exclusions [org.clojure/clojurescript
|
|
6
|
+
org.clojars.mmb90/cljs-cache]
|
|
7
|
+
}
|
|
8
|
+
org.replikativ/superv.async {:mvn/version "0.3.50"
|
|
9
|
+
:exclusions [org.clojure/clojurescript]}
|
|
10
|
+
io.replikativ/datalog-parser {:mvn/version "0.2.30"}
|
|
11
|
+
org.replikativ/persistent-sorted-set {:mvn/version "0.4.119"}
|
|
12
|
+
environ/environ {:mvn/version "1.2.0"}
|
|
13
|
+
nrepl/bencode {:mvn/version "1.1.0"}
|
|
14
|
+
com.taoensso/timbre {:mvn/version "6.8.0"}
|
|
15
|
+
junit/junit {:mvn/version "4.13.2"}
|
|
16
|
+
medley/medley {:mvn/version "1.4.0"}
|
|
17
|
+
metosin/spec-tools {:mvn/version "0.10.6"}
|
|
18
|
+
metosin/malli {:mvn/version "0.20.0"}
|
|
19
|
+
mvxcvi/clj-cbor {:mvn/version "1.1.1"}
|
|
20
|
+
org.babashka/http-client {:mvn/version "0.3.11"}
|
|
21
|
+
metosin/jsonista {:mvn/version "0.3.7"}
|
|
22
|
+
com.github.pkpkpk/cljs-cache {:mvn/version "1.0.21"}}
|
|
23
|
+
|
|
24
|
+
:paths ["src" "target/classes" "resources"]
|
|
25
|
+
|
|
26
|
+
:deps/prep-lib {:ensure "target/classes"
|
|
27
|
+
:alias :build
|
|
28
|
+
:fn compile-java}
|
|
29
|
+
|
|
30
|
+
:aliases {;; Development
|
|
31
|
+
|
|
32
|
+
:1.9 {:override-deps {org.clojure/clojure {:mvn/version "1.9.0"}}}
|
|
33
|
+
|
|
34
|
+
:1.10 {:override-deps {org.clojure/clojure {:mvn/version "1.10.0"}}}
|
|
35
|
+
|
|
36
|
+
:cljs {:extra-deps {org.clojure/clojurescript {:mvn/version "1.11.132"}
|
|
37
|
+
thheller/shadow-cljs {:mvn/version "2.28.20"}}
|
|
38
|
+
:extra-paths ["test"]}
|
|
39
|
+
|
|
40
|
+
:dev {:extra-paths ["dev" "benchmark/src"]
|
|
41
|
+
:extra-deps {org.clojure/tools.namespace {:mvn/version "1.4.4"}
|
|
42
|
+
org.clojure/clojurescript {:mvn/version "1.11.132"}
|
|
43
|
+
thheller/shadow-cljs {:mvn/version "2.28.20"}
|
|
44
|
+
clj-http/clj-http {:mvn/version "3.12.3"}
|
|
45
|
+
com.gfredericks/user.clj {:mvn/version "0.1.0"}
|
|
46
|
+
org.clojure/tools.cli {:mvn/version "1.0.219"}
|
|
47
|
+
incanter/incanter-core {:mvn/version "1.9.3"}
|
|
48
|
+
incanter/incanter-charts {:mvn/version "1.9.3"}
|
|
49
|
+
hashp/hashp {:mvn/version "0.2.2"}
|
|
50
|
+
orchestra/orchestra {:mvn/version "2021.01.01-1"}}}
|
|
51
|
+
|
|
52
|
+
:test {:extra-paths ["test" "bechmark/src" "benchmark/test" "http-server" "src-hitchhiker-tree" "src-kabel"]
|
|
53
|
+
:jvm-opts ["-ea"] ;; Enable Java assertions to catch bugs early
|
|
54
|
+
:extra-deps {lambdaisland/kaocha {:mvn/version "1.87.1366"}
|
|
55
|
+
lambdaisland/kaocha-cljs {:mvn/version "1.5.154"}
|
|
56
|
+
org.clojure/test.check {:mvn/version "1.1.1"}
|
|
57
|
+
orchestra/orchestra {:mvn/version "2021.01.01-1"}
|
|
58
|
+
|
|
59
|
+
;; hitchhiker-tree index (optional, for testing)
|
|
60
|
+
io.replikativ/hitchhiker-tree {:mvn/version "0.2.222"
|
|
61
|
+
:exclusions [org.clojure/clojurescript
|
|
62
|
+
io.replikativ/konserve]}
|
|
63
|
+
|
|
64
|
+
;; http server
|
|
65
|
+
buddy/buddy-auth {:mvn/version "3.0.323"}
|
|
66
|
+
ring/ring-core {:mvn/version "1.9.5"}
|
|
67
|
+
ring/ring-jetty-adapter {:mvn/version "1.9.5"}
|
|
68
|
+
metosin/reitit {:mvn/version "0.5.18"}
|
|
69
|
+
ring-cors/ring-cors {:mvn/version "0.1.13"}
|
|
70
|
+
|
|
71
|
+
;; kabel integration for distributed datahike
|
|
72
|
+
org.replikativ/kabel {:mvn/version "0.3.93"}
|
|
73
|
+
is.simm/distributed-scope {:mvn/version "0.1.2"}
|
|
74
|
+
org.replikativ/konserve-sync {:mvn/version "0.1.13"}
|
|
75
|
+
http-kit/http-kit {:mvn/version "2.8.0"}}}
|
|
76
|
+
|
|
77
|
+
:datomic {:extra-deps {com.datomic/datomic-free {:mvn/version "0.9.5703"}}}
|
|
78
|
+
|
|
79
|
+
:ffix {:extra-deps {cljfmt/cljfmt {:mvn/version "0.9.2"}}
|
|
80
|
+
:main-opts ["-m" "cljfmt.main" "fix"]}
|
|
81
|
+
|
|
82
|
+
;; Build
|
|
83
|
+
|
|
84
|
+
:build {:deps {io.github.clojure/tools.build {:mvn/version "0.9.5"}}
|
|
85
|
+
:ns-default build}
|
|
86
|
+
|
|
87
|
+
:deploy {:extra-deps {slipset/deps-deploy {:mvn/version "0.2.1"}}}
|
|
88
|
+
|
|
89
|
+
:http-server {:extra-paths ["http-server"]
|
|
90
|
+
:extra-deps {buddy/buddy-auth {:mvn/version "3.0.323"}
|
|
91
|
+
ring/ring-core {:mvn/version "1.9.5"}
|
|
92
|
+
ring/ring-jetty-adapter {:mvn/version "1.9.5"}
|
|
93
|
+
metosin/reitit {:mvn/version "0.5.18"}
|
|
94
|
+
ring-cors/ring-cors {:mvn/version "0.1.13"}
|
|
95
|
+
nrepl/bencode {:mvn/version "1.1.0"}
|
|
96
|
+
org.slf4j/slf4j-simple {:mvn/version "2.0.9"}}
|
|
97
|
+
:main-opts ["-m" "datahike.http.server"]}
|
|
98
|
+
|
|
99
|
+
:libdatahike {:main-opts ["-e" "(set! *warn-on-reflection* true)"]
|
|
100
|
+
:extra-paths ["libdatahike/src"]}
|
|
101
|
+
|
|
102
|
+
:native-cli {:main-opts ["-e" "(set! *warn-on-reflection* true)"
|
|
103
|
+
"-m" "clj.native-image" "datahike.cli"
|
|
104
|
+
"--initialize-at-build-time"
|
|
105
|
+
"--no-fallback"
|
|
106
|
+
"-H:IncludeResources=DATAHIKE_VERSION"
|
|
107
|
+
; "--future-defaults=all"
|
|
108
|
+
"-J-Xmx4g"
|
|
109
|
+
"-o dthk"]
|
|
110
|
+
:jvm-opts ["-Dclojure.compiler.direct-linking=true"]
|
|
111
|
+
:extra-deps
|
|
112
|
+
{clj.native-image/clj.native-image
|
|
113
|
+
{:git/url "https://github.com/taylorwood/clj.native-image.git"
|
|
114
|
+
:sha "7708e7fd4572459c81f6a6b8e44c96f41cdd92d4"}
|
|
115
|
+
com.cognitect/transit-clj {:mvn/version "1.0.333"}
|
|
116
|
+
babashka/pods {:git/url "https://github.com/babashka/pods"
|
|
117
|
+
:git/sha "ed5e1f3390b9dfca564f66b6e79c739c3cd82d78"}}}
|
|
118
|
+
|
|
119
|
+
:pod {:extra-deps {com.cognitect/transit-clj {:mvn/version "1.0.333"}
|
|
120
|
+
babashka/pods {:git/url "https://github.com/babashka/pods"
|
|
121
|
+
:git/sha "ed5e1f3390b9dfca564f66b6e79c739c3cd82d78"}
|
|
122
|
+
|
|
123
|
+
}}
|
|
124
|
+
|
|
125
|
+
;; Checks
|
|
126
|
+
|
|
127
|
+
:benchmark {:extra-paths ["benchmark/src"]
|
|
128
|
+
:extra-deps {clj-http/clj-http {:mvn/version "3.12.3"}
|
|
129
|
+
org.clojure/tools.cli {:mvn/version "1.0.219"}
|
|
130
|
+
incanter/incanter-core {:mvn/version "1.9.3"}
|
|
131
|
+
incanter/incanter-charts {:mvn/version "1.9.3"}}
|
|
132
|
+
:main-opts ["-m" "benchmark.cli"]}
|
|
133
|
+
|
|
134
|
+
:format {:extra-deps {cljfmt/cljfmt {:mvn/version "0.9.2"}}
|
|
135
|
+
:main-opts ["-m" "cljfmt.main" "check"]}
|
|
136
|
+
|
|
137
|
+
:outdated {:extra-deps {com.github.liquidz/antq {:mvn/version "2.6.1121"}}
|
|
138
|
+
:main-opts ["-m" "antq.core"]}}}
|
package/dev/sandbox.clj
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
(ns sandbox
|
|
2
|
+
(:require [datahike.api :as d]))
|
|
3
|
+
|
|
4
|
+
(comment
|
|
5
|
+
|
|
6
|
+
(def schema [{:db/ident :name
|
|
7
|
+
:db/cardinality :db.cardinality/one
|
|
8
|
+
:db/index true
|
|
9
|
+
:db/unique :db.unique/identity
|
|
10
|
+
:db/valueType :db.type/string}
|
|
11
|
+
{:db/ident :sibling
|
|
12
|
+
:db/cardinality :db.cardinality/many
|
|
13
|
+
:db/valueType :db.type/ref}
|
|
14
|
+
{:db/ident :age
|
|
15
|
+
:db/cardinality :db.cardinality/one
|
|
16
|
+
:db/valueType :db.type/long}])
|
|
17
|
+
|
|
18
|
+
(def cfg {:store {:backend :mem :id "sandbox"}
|
|
19
|
+
:keep-history? true
|
|
20
|
+
:schema-flexibility :write
|
|
21
|
+
:attribute-refs? false})
|
|
22
|
+
|
|
23
|
+
(def cfg {:store {:backend :mem :id "sandbox"}
|
|
24
|
+
:keep-history? true
|
|
25
|
+
:schema-flexibility :write
|
|
26
|
+
:attribute-refs? true})
|
|
27
|
+
|
|
28
|
+
(def conn (do
|
|
29
|
+
(d/delete-database cfg)
|
|
30
|
+
(d/create-database cfg)
|
|
31
|
+
(d/connect cfg)))
|
|
32
|
+
|
|
33
|
+
(d/transact conn schema)
|
|
34
|
+
|
|
35
|
+
(d/datoms @conn :avet)
|
|
36
|
+
(d/datoms @conn :aevt)
|
|
37
|
+
(d/datoms @conn :eavt)
|
|
38
|
+
|
|
39
|
+
(:max-eid @conn)
|
|
40
|
+
|
|
41
|
+
(d/transact conn [{:name "Alice"
|
|
42
|
+
:age 25}])
|
|
43
|
+
|
|
44
|
+
(d/transact conn [{:name "Charlie"
|
|
45
|
+
:age 45
|
|
46
|
+
:sibling [{:name "Alice"} {:name "Bob"}]}])
|
|
47
|
+
|
|
48
|
+
(d/q '[:find ?e ?a ?v ?t
|
|
49
|
+
:in $ ?a
|
|
50
|
+
:where
|
|
51
|
+
[?e :name ?v ?t]
|
|
52
|
+
[?e :age ?a]]
|
|
53
|
+
@conn
|
|
54
|
+
25)
|
|
55
|
+
|
|
56
|
+
(d/q '[:find ?e ?at ?v
|
|
57
|
+
:where
|
|
58
|
+
[?e ?a ?v]
|
|
59
|
+
[?a :db/ident ?at]]
|
|
60
|
+
@conn)
|
|
61
|
+
|
|
62
|
+
(d/q '[:find ?e :where [?e :name "Alice"]] @conn)
|
|
63
|
+
|
|
64
|
+
(:schema @conn)
|
|
65
|
+
|
|
66
|
+
(d/transact conn (vec (repeatedly 5000 (fn [] {:age (long (rand-int 1000))
|
|
67
|
+
:name (str (rand-int 1000))}))))
|
|
68
|
+
|
|
69
|
+
(time
|
|
70
|
+
(d/q {:query '[:find ?e ?v
|
|
71
|
+
:in $
|
|
72
|
+
:where [?e :name ?v]]
|
|
73
|
+
:args [@conn]
|
|
74
|
+
:offset 0
|
|
75
|
+
:limit 10}))
|
|
76
|
+
|
|
77
|
+
(time
|
|
78
|
+
(do (d/q {:query '[:find ?v1 ?v2
|
|
79
|
+
:in $
|
|
80
|
+
:where [?e1 :name ?v1] [?e2 :name ?v2]]
|
|
81
|
+
:args [@conn]})
|
|
82
|
+
nil)))
|
package/dev/sandbox.cljs
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
(ns sandbox
|
|
2
|
+
(:require
|
|
3
|
+
[datahike.api :as d]
|
|
4
|
+
[konserve.core :as k]
|
|
5
|
+
#_[datahike.nodejs]
|
|
6
|
+
[konserve.indexeddb :as idb]
|
|
7
|
+
[datahike.store :as ds]
|
|
8
|
+
[konserve.tiered :as kt]
|
|
9
|
+
[org.replikativ.persistent-sorted-set :as pss]
|
|
10
|
+
[clojure.core.async :refer [<! >! chan put! close!]])
|
|
11
|
+
(:require-macros [clojure.core.async :refer [go]]))
|
|
12
|
+
|
|
13
|
+
#_(go
|
|
14
|
+
(def idb-store (<! (idb/connect-idb-store "sandbox-store39"))))
|
|
15
|
+
|
|
16
|
+
(def idb-store (ds/add-cache-and-handlers idb-store cfg ))
|
|
17
|
+
|
|
18
|
+
(go (prn (<! (k/get idb-store :db nil {:sync? false}))))
|
|
19
|
+
|
|
20
|
+
(def store (:store @(:wrapped-atom conn)))
|
|
21
|
+
|
|
22
|
+
(keys @(:state (:frontend-store store)))
|
|
23
|
+
|
|
24
|
+
(:backend-store store)
|
|
25
|
+
|
|
26
|
+
(def eavt-address (.-address (:eavt-key (k/get store :db nil {:sync? true}))))
|
|
27
|
+
|
|
28
|
+
(def first-address (first (.-addresses (k/get store eavt-address nil {:sync? true}))))
|
|
29
|
+
|
|
30
|
+
(.-keys (k/get store (last (.-addresses (k/get store first-address nil {:sync? true}))) nil {:sync? true}))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
(pss/slice (:eavt-key (k/get store :db nil {:sync? true})) nil nil)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
(uuid [1 2 3])
|
|
37
|
+
|
|
38
|
+
(uuid 1)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
(go
|
|
44
|
+
(def tiered-store (<! (kt/connect-memory-tiered-store fs-store))))
|
|
45
|
+
|
|
46
|
+
#_(go
|
|
47
|
+
(prn (<! (k/assoc tiered-store "foo" "bar2"))))
|
|
48
|
+
|
|
49
|
+
#_(go (prn (<! (k/get tiered-store "foo"))))
|
|
50
|
+
|
|
51
|
+
#_(k/get tiered-store "foo" nil {:sync? true})
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
(def schema [{:db/ident :name
|
|
55
|
+
:db/cardinality :db.cardinality/one
|
|
56
|
+
:db/index true
|
|
57
|
+
:db/unique :db.unique/identity
|
|
58
|
+
:db/valueType :db.type/string}
|
|
59
|
+
{:db/ident :sibling
|
|
60
|
+
:db/cardinality :db.cardinality/many
|
|
61
|
+
:db/valueType :db.type/ref}
|
|
62
|
+
{:db/ident :age
|
|
63
|
+
:db/cardinality :db.cardinality/one
|
|
64
|
+
:db/valueType :db.type/long}])
|
|
65
|
+
|
|
66
|
+
(def cfg {:store {:backend :file
|
|
67
|
+
:path "/tmp/file-store2"}
|
|
68
|
+
#_{:backend :tiered
|
|
69
|
+
:frontend-store {:backend :mem :id (hasch.core/uuid)}
|
|
70
|
+
:backend-store {:backend :indexeddb
|
|
71
|
+
:name "sandbox-store46"}
|
|
72
|
+
#_{:backend :file :path "/tmp/sandbox-store9"}}
|
|
73
|
+
:keep-history? true
|
|
74
|
+
:schema-flexibility :write
|
|
75
|
+
:attribute-refs? false})
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
(go
|
|
80
|
+
(def cfg (<! (d/create-database cfg))))
|
|
81
|
+
|
|
82
|
+
(throw cfg)
|
|
83
|
+
|
|
84
|
+
(go
|
|
85
|
+
(def test-connected (<! (ds/empty-store (assoc (:store cfg) :opts {:sync? false})))))
|
|
86
|
+
|
|
87
|
+
(go
|
|
88
|
+
(def conn (<! (d/connect cfg {:sync? false}))))
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
(go (.log js/console "synced" (<! (kt/maybe-sync-on-connect (:store @(:wrapped-atom conn)) {:sync? false}))))
|
|
92
|
+
|
|
93
|
+
(throw conn)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
(go
|
|
97
|
+
(def tx-report (<! (d/transact! conn schema))))
|
|
98
|
+
|
|
99
|
+
(throw tx-report)
|
|
100
|
+
|
|
101
|
+
(go
|
|
102
|
+
(def tx-report2 (<! (d/transact! conn [{:name "Peters"
|
|
103
|
+
:age 42}]))))
|
|
104
|
+
|
|
105
|
+
;; transact 1000 dummy entities
|
|
106
|
+
(go
|
|
107
|
+
(def tx-report3 (<! (d/transact! conn (map (fn [i] {:name (str "Name" i)
|
|
108
|
+
:age i})
|
|
109
|
+
(range 1000))))))
|
|
110
|
+
|
|
111
|
+
;; this does not properly load after restart
|
|
112
|
+
(d/q '[:find (count ?e) :where [?e :name ?n]] @conn)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
(into {} (d/entity @conn 4))
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
(d/pull @conn '[:db/id :name] 4)
|
|
119
|
+
|
|
120
|
+
(d/q '[:find (count ?e) :where [?e :name ?n]] (d/as-of @conn (js/Date.)))
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
(d/history @conn)
|
|
124
|
+
|
|
125
|
+
(d/q '[:find (count ?e) :where [?e :name ?n]] (d/history @conn))
|
|
126
|
+
|
|
127
|
+
(d/datoms @conn :eavt)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
(ns sandbox-benchmarks
|
|
2
|
+
(:require [benchmark.cli :as b]
|
|
3
|
+
[benchmark.store :as s]))
|
|
4
|
+
|
|
5
|
+
;(b/-main) ;; TIMBRE_LEVEL=':fatal' clj -M:benchmark
|
|
6
|
+
|
|
7
|
+
;(b/-main "-t" "test-id") ;; TIMBRE_LEVEL=':fatal' clj -M:benchmark -t test-id
|
|
8
|
+
|
|
9
|
+
;(b/-main "-t" "test-id" "-t" "test-id2") ;; TIMBRE_LEVEL=':fatal' clj -M:benchmark -t test-id -t test-id2
|
|
10
|
+
|
|
11
|
+
;(b/-main "-t" "test-id" "-u" "http://localhost:3001" "-n" "benchmarks" "-g" "test-token") ;; TIMBRE_LEVEL=':fatal' clj -M:benchmark run -o remote-db -t test-id -u http://localhost:3001 -n benchmarks -g test-token
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
;; docker run -d --name datahike-server -p 3001:3000 -e DATAHIKE_SERVER_TOKEN=test-token -e DATAHIKE_SCHEMA_FLEXIBILITY=write -e DATAHIKE_STORE_BACKEND=file -e DATAHIKE_NAME=benchmarks -e DATAHIKE_STORE_PATH=/opt/datahike-server/benchmarks replikativ/datahike-server:snapshot
|
|
15
|
+
|
|
16
|
+
;(def db (s/->RemoteDB "http://localhost:3001" "test-token" "benchmarks"))
|
|
17
|
+
|
|
18
|
+
;(s/list-databases db)
|
|
19
|
+
|
|
20
|
+
;(s/transact-missing-schema db)
|
|
21
|
+
;(s/get-datoms db)
|
|
22
|
+
;(s/request-data db '[:find ?e ?a ?v :where [?e ?a ?v]])
|
|
23
|
+
;(s/request-data db '[:find ?e ?a ?v :where [1 ?a ?v]]) ;; -> error status 500
|
|
24
|
+
;(s/request-data db '[:find ?e ?a ?v :where [?e :db ?v]])
|
|
25
|
+
;(s/request-data db '[:find ?e ?v ?t :where [?e :dh-backend ?v ?t]])
|
|
26
|
+
;(s/get-schema db)
|
|
27
|
+
|