安全 / notnosql
基于SQL的NoSQL库,尽管它不是!
2.0.0
2018-12-05 23:27 UTC
Requires
- php: ^7.0
- dflydev/dot-access-data: ^2.0
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-21 05:02:25 UTC
README
它是什么
NotNoSQL是一个基于SQL的NoSQL键/值存储。这意味着它像Couch或Mongo这样的大型项目一样,使用键/值对来存储数据,而不是遵循传统基于SQL的RDBMS的表/行/列方案。这也意味着它使用这样的SQL基于RDBMS来实现这样的功能。
它不是什么
NotNoSQL并不适用于大型部署,也不打算替代专门基于NoSQL的键/值存储。相反,它旨在为小应用程序提供快速的数据持久性,这些应用程序具有一定的并发性(这会使.json文件变得危险)。与其将其视为数据库的替代品,不如将其视为平面文件存储的替代品。
使用示例
<?php require 'vendor/autoload.php'; $notnosql = new Sikker\NotNoSQL\NotNoSQL( new PDO('sqlite:database.sqlite3') ); $notnosql->put('foo', 'bar'); echo $notnosql->get('foo') . PHP_EOL;
工作原理
NotNoSQL通过提供连接到您想要使用的任何数据源(无论是sqlite数据库还是Oracle集群)的PDO对象来工作。它已被测试,可以与SQLite3和MySQL一起工作。之后,您只需将其视为一个基于json的键/值存储,如下所示
$notnosql->put('beef.stroganoff.attr.country', ['unknown', 'unknown', 'THE EMPIRE!']); var_dump($notnosql->get('beef.stroganoff.attr.country'));
简单,对吧?
需要注意的一点是,数据在内部转换为数组,即使输入的是对象。因此,您将始终得到数组。不过,您可以根据需要将其转换为stdClass对象!
将内容放入多维数组中,如下所示
$notnosql->put('beef.stroganoff.chef', 'Bender'); $notnosql->put('beef.stroganoff.customer', 'Fry');
可以从您希望的任何父节点开始检索,如下所示
$notnosql->get('beef.stroganoff'); // returns ['chef' => 'Bender', 'customer' => 'Fry']
如果您要向现有的数组添加项,可以使用add方法
$notnosql->put('deliveries', []); $notnosql->add('deliveries', ['from' => 'Nixon', 'to' => 'Lrrr, Ruler of Omicron Persei 8']); $notnosql->add('deliveries', ['from' => 'Russia', 'with' => 'love']);
您可以使用delete方法删除键及其下的一切
$notnosql->delete('beef.stroganoff');
尽管如果您只想删除内容,应简单地使用put再次给它一个空值
$notnosql->put('deliveries', []);