dictsqlite 2.1.1__tar.gz → 2.1.3__tar.gz
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.
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/Cargo.lock +15 -27
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/Cargo.toml +3 -4
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/PKG-INFO +25 -6
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/Pypi.md +23 -4
- dictsqlite-2.1.3/benchmark/README.md +53 -0
- dictsqlite-2.1.3/benchmark/analyze_results.py +433 -0
- dictsqlite-2.1.3/benchmark/benchmark_all.py +624 -0
- dictsqlite-2.1.3/benchmark/benchmark_results - /343/202/263/343/203/224/343/203/274.csv" +87 -0
- dictsqlite-2.1.3/benchmark/benchmark_results.csv +87 -0
- dictsqlite-2.1.3/benchmark/export_for_github_action_benchmark.py +73 -0
- dictsqlite-2.1.3/benchmark/images/benchmark_avg_latency.png +0 -0
- dictsqlite-2.1.3/benchmark/images/benchmark_by_batch_size.png +0 -0
- dictsqlite-2.1.3/benchmark/images/benchmark_by_data_size.png +0 -0
- dictsqlite-2.1.3/benchmark/images/benchmark_category_comparison.png +0 -0
- dictsqlite-2.1.3/benchmark/images/benchmark_ops_per_sec.png +0 -0
- dictsqlite-2.1.3/benchmark/images/benchmark_p95_latency.png +0 -0
- dictsqlite-2.1.3/benchmark_report.txt +105 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/EXAMPLES_EN.md +1 -1
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/EXAMPLES_JP.md +1 -1
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/INDEX.md +3 -3
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/README_EN.md +10 -1
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/README_JP.md +10 -1
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/pyproject.toml +2 -3
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/async_ops.rs +133 -91
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/lib.rs +96 -106
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/storage.rs +100 -12
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/tests_jsonb.rs +0 -2
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/tests_storage.rs +4 -4
- dictsqlite-2.1.1/benchmark/README.md +0 -32
- dictsqlite-2.1.1/benchmark/analyze_results.py +0 -262
- dictsqlite-2.1.1/benchmark/benchmark_all.py +0 -367
- dictsqlite-2.1.1/benchmark/benchmark_results.csv +0 -19
- dictsqlite-2.1.1/benchmark/images/benchmark_avg_latency.png +0 -0
- dictsqlite-2.1.1/benchmark/images/benchmark_by_data_size.png +0 -0
- dictsqlite-2.1.1/benchmark/images/benchmark_category_comparison.png +0 -0
- dictsqlite-2.1.1/benchmark/images/benchmark_ops_per_sec.png +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/.bandit +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/.gitignore +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/benches/ops_benchmark.rs +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/build.sh +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/build_production.sh +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/build_result.txt +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/check_result.txt +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/deny.toml +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/FIX_SUMMARY.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/MIGRATION_FROM_1.8.8_EN.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/MIGRATION_FROM_1.8.8_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/TABLE_PROXY_REPR_REPORT.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/optimization_v5/01_overview.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/optimization_v5/02_storage_engine.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/optimization_v5/03_async_layer.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/optimization_v5/04_integration.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/docs/optimization_v5/05_verification.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/README.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/async_await_example.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/async_jsonb_table_usage.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/jsonb_table_usage_example.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/v4.2_advanced_examples.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/v4.2_basic_usage.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/v4.2_migration_example.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/examples/v4.2_performance_examples.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/ASYNC_IMPLEMENTATION_SUMMARY.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/ASYNC_SUPPORT_README.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/BENCHMARK_RESULTS_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/BUILD_WARNINGS_EXPLANATION_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/CLIPPY_FIXES_SUMMARY.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/COMPREHENSIVE_BENCHMARK_RESULTS.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/COMPREHENSIVE_TEST_IMPLEMENTATION_REPORT_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/DEVELOPER_GUIDE_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/DICTSQLITE_V2_SPECIFICATION_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/DOCUMENTATION_INDEX_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/DOCUMENTATION_VERIFICATION_SUMMARY.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/FIX_SUMMARY_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/GITHUB_ACTIONS_FIXES.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/IMPLEMENTATION_COMPLETION_REPORT.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/IMPLEMENTATION_COMPLETION_REPORT_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/IMPROVEMENT_ACTION_PLAN_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/INVESTIGATION_SUMMARY_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/ISSUE_RESPONSE_JSON_TABLE_SUPPORT_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/JSONB_TABLE_IMPLEMENTATION_SUMMARY_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/JSON_MODE_TABLE_SUPPORT_FEASIBILITY_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/MIGRATION_GUIDE_V4.2_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/PERFORMANCE_OPTIMIZATION_GUIDE_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/PERFORMANCE_TESTING_GUIDE.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/PERFORMANCE_TEST_IMPLEMENTATION.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/PERFORMANCE_TEST_RESULTS.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/PYTEST_INTEGRATION_SUMMARY.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/PYTEST_WARNINGS_FIX.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/QUICK_REFERENCE_JSONB_TABLE_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/README_INVESTIGATION_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/README_V4.2_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/TESTING_DOCUMENTATION_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/TEST_AND_DOCUMENTATION_REVIEW_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/TEST_COMPLETION_REPORT.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/V4.2_IMPLEMENTATION_SUMMARY.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/others/WINDOWS_PERMISSION_FIX.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/python/dictsqlite/__init__.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/python/dictsqlite/modules/__init__.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/python/dictsqlite/modules/safe_pickle.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/setup.cfg +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/cache.rs +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/crypto.rs +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/tests_compression.rs +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/tests_lru.rs +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/src/tests_v6.rs +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/test_debug.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/ISSUE_RESPONSE.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/README.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/README_COMPREHENSIVE_TESTS.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/README_NEW_COMPREHENSIVE_TESTS.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/TEST_DOCUMENTATION.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/TEST_FIXES_REPORT_JP.md +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/__init__.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/_check_safe_pickle.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/_reproduce_test.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/benchmark_comprehensive.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/conftest.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_advanced_features.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_async_awaitable.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_async_operations.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_async_persistence.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_async_table_contains.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_basic_operations.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_boundary_edge_cases.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_comprehensive_all_functions.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_comprehensive_edge_cases.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_comprehensive_integration.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_comprehensive_stress.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_dict_compat_api.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_exhaustive_async.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_exhaustive_async_table_proxy.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_exhaustive_dictsqlite_v4.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_exhaustive_table_proxy.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_issue_fixes.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_jsonb_table_support.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_lru_eviction.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_performance.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_persistence_modes.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_pool_size.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_return_type_validation.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_storage_modes.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_table_mode.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_table_proxy_eq.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_table_proxy_repr.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_v4.2_comprehensive_performance.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_v4_security.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_v6_migration.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/test_v7_batch_async.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/tests/verify_optimization_opportunities.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/__init__.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/__main__.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/auth.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/cli.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/commands/__init__.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/commands/check.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/commands/register.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/commands/upload.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/distribution.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/exceptions.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/package.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/py.typed +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/repository.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/sdist.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/settings.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/utils.py +0 -0
- {dictsqlite-2.1.1 → dictsqlite-2.1.3}/twine/wheel.py +0 -0
|
@@ -88,9 +88,9 @@ checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
|
|
|
88
88
|
|
|
89
89
|
[[package]]
|
|
90
90
|
name = "anyhow"
|
|
91
|
-
version = "1.0.
|
|
91
|
+
version = "1.0.103"
|
|
92
92
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
93
|
-
checksum = "
|
|
93
|
+
checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3"
|
|
94
94
|
|
|
95
95
|
[[package]]
|
|
96
96
|
name = "argon2"
|
|
@@ -412,7 +412,7 @@ dependencies = [
|
|
|
412
412
|
|
|
413
413
|
[[package]]
|
|
414
414
|
name = "dictsqlite"
|
|
415
|
-
version = "2.1.
|
|
415
|
+
version = "2.1.3"
|
|
416
416
|
dependencies = [
|
|
417
417
|
"aes-gcm",
|
|
418
418
|
"ahash",
|
|
@@ -431,7 +431,6 @@ dependencies = [
|
|
|
431
431
|
"pbkdf2",
|
|
432
432
|
"proptest",
|
|
433
433
|
"pyo3",
|
|
434
|
-
"pythonize",
|
|
435
434
|
"r2d2",
|
|
436
435
|
"r2d2_sqlite",
|
|
437
436
|
"rayon",
|
|
@@ -941,9 +940,9 @@ dependencies = [
|
|
|
941
940
|
|
|
942
941
|
[[package]]
|
|
943
942
|
name = "pyo3"
|
|
944
|
-
version = "0.
|
|
943
|
+
version = "0.29.0"
|
|
945
944
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
946
|
-
checksum = "
|
|
945
|
+
checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
|
|
947
946
|
dependencies = [
|
|
948
947
|
"libc",
|
|
949
948
|
"once_cell",
|
|
@@ -955,18 +954,18 @@ dependencies = [
|
|
|
955
954
|
|
|
956
955
|
[[package]]
|
|
957
956
|
name = "pyo3-build-config"
|
|
958
|
-
version = "0.
|
|
957
|
+
version = "0.29.0"
|
|
959
958
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
960
|
-
checksum = "
|
|
959
|
+
checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
|
|
961
960
|
dependencies = [
|
|
962
961
|
"target-lexicon",
|
|
963
962
|
]
|
|
964
963
|
|
|
965
964
|
[[package]]
|
|
966
965
|
name = "pyo3-ffi"
|
|
967
|
-
version = "0.
|
|
966
|
+
version = "0.29.0"
|
|
968
967
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
969
|
-
checksum = "
|
|
968
|
+
checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
|
|
970
969
|
dependencies = [
|
|
971
970
|
"libc",
|
|
972
971
|
"pyo3-build-config",
|
|
@@ -974,9 +973,9 @@ dependencies = [
|
|
|
974
973
|
|
|
975
974
|
[[package]]
|
|
976
975
|
name = "pyo3-macros"
|
|
977
|
-
version = "0.
|
|
976
|
+
version = "0.29.0"
|
|
978
977
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
979
|
-
checksum = "
|
|
978
|
+
checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
|
|
980
979
|
dependencies = [
|
|
981
980
|
"proc-macro2",
|
|
982
981
|
"pyo3-macros-backend",
|
|
@@ -986,27 +985,16 @@ dependencies = [
|
|
|
986
985
|
|
|
987
986
|
[[package]]
|
|
988
987
|
name = "pyo3-macros-backend"
|
|
989
|
-
version = "0.
|
|
988
|
+
version = "0.29.0"
|
|
990
989
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
991
|
-
checksum = "
|
|
990
|
+
checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
|
|
992
991
|
dependencies = [
|
|
993
992
|
"heck",
|
|
994
993
|
"proc-macro2",
|
|
995
|
-
"pyo3-build-config",
|
|
996
994
|
"quote",
|
|
997
995
|
"syn",
|
|
998
996
|
]
|
|
999
997
|
|
|
1000
|
-
[[package]]
|
|
1001
|
-
name = "pythonize"
|
|
1002
|
-
version = "0.28.0"
|
|
1003
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1004
|
-
checksum = "0b79f670c9626c8b651c0581011b57b6ba6970bb69faf01a7c4c0cfc81c43f95"
|
|
1005
|
-
dependencies = [
|
|
1006
|
-
"pyo3",
|
|
1007
|
-
"serde",
|
|
1008
|
-
]
|
|
1009
|
-
|
|
1010
998
|
[[package]]
|
|
1011
999
|
name = "quick-error"
|
|
1012
1000
|
version = "1.2.3"
|
|
@@ -1052,9 +1040,9 @@ dependencies = [
|
|
|
1052
1040
|
|
|
1053
1041
|
[[package]]
|
|
1054
1042
|
name = "rand"
|
|
1055
|
-
version = "0.9.
|
|
1043
|
+
version = "0.9.4"
|
|
1056
1044
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1057
|
-
checksum = "
|
|
1045
|
+
checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
|
|
1058
1046
|
dependencies = [
|
|
1059
1047
|
"rand_chacha",
|
|
1060
1048
|
"rand_core 0.9.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "dictsqlite"
|
|
3
|
-
version = "2.1.
|
|
3
|
+
version = "2.1.3"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
authors = ["Disnana <support@disnana.com>"]
|
|
6
6
|
description = "High-performance DictSQLite v2 with I/O optimizations (300x async, 43x sync speedup) - Buffered writes and batch operations"
|
|
@@ -11,8 +11,8 @@ name = "dictsqlite"
|
|
|
11
11
|
crate-type = ["cdylib", "rlib"]
|
|
12
12
|
|
|
13
13
|
[dependencies]
|
|
14
|
-
# Python bindings (updated: PyO3 0.
|
|
15
|
-
pyo3 = { version = "0.
|
|
14
|
+
# Python bindings (updated: PyO3 0.29 for latest security fixes)
|
|
15
|
+
pyo3 = { version = "0.29", features = ["extension-module", "abi3-py39", "experimental-async"] }
|
|
16
16
|
|
|
17
17
|
# High-performance concurrent data structures (v5.1 update: dashmap 6.1 for better perf)
|
|
18
18
|
dashmap = "6.1" # Lock-free concurrent HashMap
|
|
@@ -32,7 +32,6 @@ async-trait = "0.1"
|
|
|
32
32
|
serde = { version = "1.0", features = ["derive"] }
|
|
33
33
|
serde_json = "1.0"
|
|
34
34
|
rmp-serde = "1.1" # MessagePack for JSONB mode
|
|
35
|
-
pythonize = "0.28" # Fast Python <-> Rust JSON conversion (pyo3 0.28 compat)
|
|
36
35
|
|
|
37
36
|
# Compression (v5 optimization)
|
|
38
37
|
zstd = "0.13" # High-speed compression
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dictsqlite
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.3
|
|
4
4
|
Classifier: License :: OSI Approved :: MIT License
|
|
5
|
-
Classifier: Development Status ::
|
|
5
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
6
6
|
Classifier: Operating System :: OS Independent
|
|
7
7
|
Classifier: Intended Audience :: Developers
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -17,10 +17,19 @@ License: MIT
|
|
|
17
17
|
Requires-Python: >=3.9
|
|
18
18
|
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
# DictSQLite Version 2
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
High-performance dict-like SQLite storage for Python, backed by a Rust native extension.
|
|
23
|
+
|
|
24
|
+
## Release Highlights — v2.1.3
|
|
25
|
+
|
|
26
|
+
- More robust write-buffer flushing: pending writes are restored if a storage flush fails.
|
|
27
|
+
- Safer delete/clear behavior: pending buffered writes no longer reappear after removal.
|
|
28
|
+
- Faster batch cache-miss reads using bulk SQLite queries.
|
|
29
|
+
- Improved warm-cache memory accounting to avoid repeated full-cache scans.
|
|
30
|
+
- Fixed separate-table persistence and compression/decompression consistency.
|
|
31
|
+
- Expanded benchmark coverage across sizes, record counts, storage modes, table modes, cold reads, mutations, and threaded access.
|
|
32
|
+
- GitHub Actions now publishes benchmark artifacts, comparison data, and Markdown summaries.
|
|
24
33
|
|
|
25
34
|
## English Version
|
|
26
35
|
(日本語のREADMEは下にあります)
|
|
@@ -74,7 +83,17 @@ You are free to modify the code, but you must give appropriate credit to the ori
|
|
|
74
83
|
## 日本語版
|
|
75
84
|
(English version is above)
|
|
76
85
|
|
|
77
|
-
|
|
86
|
+
Rust製ネイティブ拡張をバックエンドにした、辞書ライクな高性能 SQLite ストレージです。
|
|
87
|
+
|
|
88
|
+
## リリースハイライト — v2.1.3
|
|
89
|
+
|
|
90
|
+
- flush 失敗時に保留中の書き込みが失われないように改善
|
|
91
|
+
- delete/clear 後に未 flush の値が復活する問題を修正
|
|
92
|
+
- batch 取得のキャッシュミス時に一括 SQLite 読み込みを使用
|
|
93
|
+
- warm cache のメモリ使用量管理を改善し、不要な全走査を削減
|
|
94
|
+
- separate table の永続化と圧縮/展開の整合性を修正
|
|
95
|
+
- サイズ、件数、保存形式、テーブルモード、cold read、削除/clear、並行アクセスを含むベンチマークを拡充
|
|
96
|
+
- GitHub Actions でベンチ結果 artifact、比較データ、Markdown Summary を出力
|
|
78
97
|
|
|
79
98
|
## インストール
|
|
80
99
|
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
# DictSQLite Version 2
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
High-performance dict-like SQLite storage for Python, backed by a Rust native extension.
|
|
4
|
+
|
|
5
|
+
## Release Highlights — v2.1.3
|
|
6
|
+
|
|
7
|
+
- More robust write-buffer flushing: pending writes are restored if a storage flush fails.
|
|
8
|
+
- Safer delete/clear behavior: pending buffered writes no longer reappear after removal.
|
|
9
|
+
- Faster batch cache-miss reads using bulk SQLite queries.
|
|
10
|
+
- Improved warm-cache memory accounting to avoid repeated full-cache scans.
|
|
11
|
+
- Fixed separate-table persistence and compression/decompression consistency.
|
|
12
|
+
- Expanded benchmark coverage across sizes, record counts, storage modes, table modes, cold reads, mutations, and threaded access.
|
|
13
|
+
- GitHub Actions now publishes benchmark artifacts, comparison data, and Markdown summaries.
|
|
5
14
|
|
|
6
15
|
## English Version
|
|
7
16
|
(日本語のREADMEは下にあります)
|
|
@@ -55,7 +64,17 @@ You are free to modify the code, but you must give appropriate credit to the ori
|
|
|
55
64
|
## 日本語版
|
|
56
65
|
(English version is above)
|
|
57
66
|
|
|
58
|
-
|
|
67
|
+
Rust製ネイティブ拡張をバックエンドにした、辞書ライクな高性能 SQLite ストレージです。
|
|
68
|
+
|
|
69
|
+
## リリースハイライト — v2.1.3
|
|
70
|
+
|
|
71
|
+
- flush 失敗時に保留中の書き込みが失われないように改善
|
|
72
|
+
- delete/clear 後に未 flush の値が復活する問題を修正
|
|
73
|
+
- batch 取得のキャッシュミス時に一括 SQLite 読み込みを使用
|
|
74
|
+
- warm cache のメモリ使用量管理を改善し、不要な全走査を削減
|
|
75
|
+
- separate table の永続化と圧縮/展開の整合性を修正
|
|
76
|
+
- サイズ、件数、保存形式、テーブルモード、cold read、削除/clear、並行アクセスを含むベンチマークを拡充
|
|
77
|
+
- GitHub Actions でベンチ結果 artifact、比較データ、Markdown Summary を出力
|
|
59
78
|
|
|
60
79
|
## インストール
|
|
61
80
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# DictSQLite Benchmark Suite
|
|
2
|
+
|
|
3
|
+
パフォーマンス測定とグラフ分析ツール
|
|
4
|
+
|
|
5
|
+
## 使い方
|
|
6
|
+
|
|
7
|
+
### 1. ベンチマーク実行
|
|
8
|
+
```bash
|
|
9
|
+
cd benchmark
|
|
10
|
+
python benchmark_all.py --profile quick
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
`--profile` は3段階です。
|
|
14
|
+
|
|
15
|
+
| profile | 用途 |
|
|
16
|
+
|---------|------|
|
|
17
|
+
| `quick` | CIや修正後のスモーク確認向け |
|
|
18
|
+
| `full` | ローカルでの通常比較向け |
|
|
19
|
+
| `stress` | 大きいサイズ・大量件数・高並行の確認向け |
|
|
20
|
+
|
|
21
|
+
### 2. グラフ生成
|
|
22
|
+
```bash
|
|
23
|
+
python analyze_results.py
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## 出力ファイル
|
|
27
|
+
|
|
28
|
+
| ファイル | 説明 |
|
|
29
|
+
|----------|------|
|
|
30
|
+
| `benchmark_results.csv` | 性能結果データ(固定名) |
|
|
31
|
+
| `benchmark_ops_per_sec.png` | 操作/秒比較グラフ |
|
|
32
|
+
| `benchmark_avg_latency.png` | 平均レイテンシグラフ |
|
|
33
|
+
| `benchmark_by_data_size.png` | データサイズ別性能 |
|
|
34
|
+
| `benchmark_by_batch_size.png` | バッチサイズ/件数別性能 |
|
|
35
|
+
| `benchmark_p95_latency.png` | p95レイテンシ |
|
|
36
|
+
| `benchmark_category_comparison.png` | カテゴリ別総合比較 |
|
|
37
|
+
|
|
38
|
+
## テスト対象
|
|
39
|
+
|
|
40
|
+
- DictSQLiteV4: get, set, batch_get, batch_set, flush, delete, clear
|
|
41
|
+
- AsyncDictSQLite: get, set, batch_get, batch_set, flush
|
|
42
|
+
- TableProxy / AsyncTableProxy: prefix/separate mode の get, set, contains
|
|
43
|
+
- persist_mode: memory, lazy, writethrough
|
|
44
|
+
- storage_mode: bytes, json, jsonb, pickle
|
|
45
|
+
- cold read: 新しいインスタンスからのストレージ読み込み
|
|
46
|
+
- threaded access: 複数スレッドでの混合 get/set
|
|
47
|
+
|
|
48
|
+
## 測定軸
|
|
49
|
+
|
|
50
|
+
- `data_size`: 値のサイズ
|
|
51
|
+
- `batch_size`: 一括処理の件数、または対象レコード数
|
|
52
|
+
- `scenario`: hot read/write、cold storage read、table mode、threaded などの測定条件
|
|
53
|
+
- `p95_time_ms`: 外れ値に強いレイテンシ確認用
|