byjg/anydataset-nosql

A NoSql abstraction dataset. Anydataset is an agnostic data source abstraction layer in PHP.

4.9.0 2024-01-07 05:22 UTC

This package is auto-updated.

Last update: 2024-04-08 20:20:23 UTC


README

Build Status Opensource ByJG GitHub source GitHub license GitHub release

Anydataset NoSQL standardize the access to non-relational databases/repositories and treat them as Key/Value. The implementation can work with:

  • MongoDB
  • Cloudflare KV
  • S3
  • DynamoDB

Anydataset is an agnostic data source abstraction layer in PHP. See more about Anydataset here.

Features

  • Access as Key/Value repositories different datasource
  • Allow put and get data
  • Simplified way to connect to the datasources

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
Cloudflare KV kv://username:password@accountid/namespaceid
S3 s3://accesskey:secretkey@region/bucket?params
AWS DynamoDB dynamodb://accesskey:secretkey@hostname/tablename?params

Examples

Check implementation examples on https://opensource.byjg.com/php/anydataset-nosql

Install

Just type:

composer require "byjg/anydataset-nosql"

Running Unit tests

docker-compose up -d
export MONGODB_CONNECTION="mongodb://127.0.0.1/test"
export S3_CONNECTION="s3://aaa:12345678@us-east-1/mybucket?create=true&endpoint=http://127.0.0.1:4566"
export DYNAMODB_CONNECTION="dynamodb://accesskey:secretkey@us-east-1/tablename?endpoint=http://127.0.0.1:8000"
vendor/bin/phpunit

Setup MongoDB for the unit test

Set the environment variable:

  • MONGODB_CONNECTION = "mongodb://127.0.0.1/test"

Setup AWS DynamoDb for the unit test

Set the environment variable:

  • DYNAMODB_CONNECTION = "dynamodb://accesskey:secretkey@region/tablename"

Setup AWS S3 for the unit test

Set the environment variable:

  • S3_CONNECTION = "s3://accesskey:secretkey@region/bucketname"

Cloudflare KV

Set the environment variable:

  • CLOUDFLAREKV_CONNECTION = "kv://email:authkey@accountid/namespaceid"

Dependencies

flowchart TD
   byjg/anydataset-nosql --> ext-curl
   byjg/anydataset-nosql --> aws/aws-sdk-php
   byjg/anydataset-nosql --> byjg/anydataset
   byjg/anydataset-nosql --> byjg/anydataset-array
   byjg/anydataset-nosql --> byjg/serializer
   byjg/anydataset-nosql --> byjg/webrequest
   byjg/anydataset-nosql --> ext-json

Open source ByJG