byjg / anydataset-nosql
Anydataset NoSQL standardizes the access to non-relational databases/repositories and provides a consistent interface for both NoSQL document databases and Key/Value stores.
Fund package maintenance!
byjg
Installs: 8 113
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 1
Forks: 2
Open Issues: 0
pkg:composer/byjg/anydataset-nosql
Requires
- php: >=8.1 <8.4
- ext-curl: *
- ext-json: *
- aws/aws-sdk-php: 3.*
- byjg/anydataset: ^5.0
- byjg/anydataset-array: ^5.0
- byjg/cache-engine: ^5.0
- byjg/serializer: ^5.0
- byjg/webrequest: ^5.0
Requires (Dev)
- phpunit/phpunit: ^9.6
- vimeo/psalm: ^5.9
Suggests
- ext-mongodb: *
- byjg/cache-engine: ^5.0
Provides
README
Anydataset NoSQL standardizes the access to non-relational databases/repositories and provides a consistent interface for both NoSQL document databases and Key/Value stores. The implementation supports:
- MongoDB (document-based)
- AWS DynamoDB (key/value)
- S3-Like Storage (key/value)
- Cloudflare KV (key/value)
Anydataset is an agnostic data source abstraction layer in PHP. See more about Anydataset here.
Features
- Access both document-based and key/value repositories with consistent interfaces
- NoSQL document-based databases accessed through
NoSqlInterface - Key/Value stores accessed through
KeyValueInterface - Unified connection string format based on URIs
- Built-in caching capabilities with PSR-16 compatibility
- Type-safe DynamoDB attribute definitions using enums
Connection Based on URI
The connection string for databases is based on URL.
See below the current implemented drivers:
| Datasource | Connection String |
|---|---|
| MongoDB | mongodb://username:password@hostname:port/database |
| S3 | s3://accesskey:secretkey@region/bucket?params |
| Cloudflare KV | kv://username:password@accountid/namespaceid |
| AWS DynamoDB | dynamodb://accesskey:secretkey@hostname/tablename?params |
Documentation
NoSQL Drivers
- MongoDB - Document-based NoSQL database
Key/Value Drivers
- AWS DynamoDB - Key/Value store with type-safe attribute definitions
- AWS S3 - Object storage as Key/Value store
- Cloudflare KV - Cloudflare Workers KV storage
Additional Features
- Cache Store - PSR-16 compatible cache layer for Key/Value stores
- Running Tests - How to run the test suite
Install
Just type:
composer require "byjg/anydataset-nosql"
Dependencies
flowchart TD byjg/anydataset-nosql --> ext-curl byjg/anydataset-nosql --> aws/aws-sdk-php byjg/anydataset-nosql --> byjg/anydataset byjg/anydataset-nosql --> byjg/serializer byjg/anydataset-nosql --> byjg/webrequest byjg/anydataset-nosql --> byjg/cache-engine byjg/anydataset-nosql --> ext-jsonLoading