Download
JSQLDB - ?????? ????? ????????? JSON ?? SQL ??????? ??? ?? Ascoos OS
? JSQLDB ???????? ??? ???????????? ?????? ????? ????????? ??? Ascoos OS ??? ????????? ???????????? ?? ?????? JSON, ?? ?????????? SQL-like ??????????.
??????????? ??? ????????? ??? ??????????? ??????????, ????????, ???????? ??? ????? ??????????? ??? MySQL, MariaDB ? SQLite.
? ?????????? ??? ????? ?????? ??????????? ?? ??? ?????? ??? Ascoos OS, ??? ? ???????? ??? ???? ??????? ???? ??? TJSQLDBHandler.
???? ?? ?????????, ?? ?????? ??? ?? ????????? ?????????????? ??? ?? ???? ?? ??????????? ???????, ?????????????? ??????????? ??? ????????.
?? ????? ?????
$db = new TJSQLDBHandler($conf);
$db->setSQLQuery("
SELECT title, created_at
FROM #__articles
ORDER BY created_at DESC
LIMIT 5
");
$db->execute();
print_r($db->getResults());
$db->close();
?? ????????? ? JSQLDB
? JSQLDB ?????????? ?? ???????? ?? JSON ??????, ??????????? ?????????, ???????? ??? TEXT ????? ??? SQL ??????? ??? CRUD ???????????.
? ?????? ????? ???????????????? ??? PHP 8.4+ ??? ????????? ??? TUTF8 Grapheme Engine ??? Ascoos OS, ???? ? ??????????? ???????? ?? ??????? ?? ???? ?? ?????????? ?????? ??????? ??? ??? ?? bytes.
???? ???????? ??? ? ???? ??? «?????» ???? ?????????? ??? ????, ?????????? ????? ?? ????? ???????? ?????????? (emoji, ???????, ??????????? ???????) ??? ?????????? ????????? ??? ??????????? ????? ?? ???? ??? ???????.
??????? ??? ????????????
? JSQLDB ??? ??????? ???????????.
?? ??????? ????????? (config, users, root path) ????????? ??? configuration ??? Ascoos OS ??? ????? ????????????????.
?????????? ????????? ??????????:
'db' => [
'db_driver' => 'jsqldb',
'jsqldb' => [
'config_path' => '/path/to/jsqldb/conf/config.json',
'users_path' => '/path/to/jsqldb/conf/users.json',
'db_root_path' => '/path/to/jsqldb/db',
'dbname' => 'jsqldb',
],
],
???? domain/subdomain ?????? ?? ???? ???? ??? ????, ?? ???? ??? credentials:
'db' => [
'db_driver' => 'jsqldb',
'jsqldb' => [
'host' => 'localhost',
'port' => 28031,
'user' => 'user',
'pass' => 'pass',
'dbname' => 'test_db',
],
],
?????????? 1 - ?????????? ?????, ?????? ??? ?????? ????????
?? ???????? ?????????? (examples/example3.php) ??????? ??? ?????? workflow:
?????????? ?????, ??????, ??????, batch insert ??? ???????? ?????????.
$jsqldb = new TJSQLDBHandler($conf, [
'tables_prefix' => 'ascoos_',
'default_compression' => true
]);
$jsqldb->createDatabase('test_db');
$jsqldb->createUser('user', 'pass', 'test_db');
$jsqldb->selectDatabase('test_db');
$sql = "CREATE TABLE IF NOT EXISTS `#__articles` (...);";
$jsqldb->setSQLQuery($sql);
$jsqldb->execute();
$insertQuery = "INSERT INTO #__articles (...) VALUES (?, ?, ?, ?, ?, ?)";
$jsqldb->bind('iiiiss', [$data], $insertQuery);
$jsqldb->execute();
$jsqldb->setSQLQuery("SELECT * FROM #__articles LIMIT 10");
$jsqldb->execute();
$data = $jsqldb->getResults();
$jsqldb->close();
?????????? 2 - ??????? ???????? ?? JOIN ??? ???????????? ?????
?? ??????? ?????????? (examples/example4.php) ??????????? ??? ??? ??????? ???????:
??????? ???????? ?? slug, excerpt, content, timestamps, ENUM status ??? JOIN ?? ??????? ??? ??????????.
$jsqldb->createDatabase('myapp_2026');
$jsqldb->createUser('webuser', 'strongPass123!', 'myapp_2026');
$jsqldb->selectDatabase('myapp_2026');
$createTable = "CREATE TABLE IF NOT EXISTS `#__news` (...);";
$jsqldb->setSQLQuery($createTable);
$jsqldb->execute();
$insertQuery = "INSERT INTO #__news (...) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
$jsqldb->bind('ssssiiis', $data, $insertQuery);
$jsqldb->execute();
$selectQuery = "
SELECT n.id, n.title, n.excerpt, n.published_at,
u.username AS author_name,
c.name AS category_name
FROM #__news n
LEFT JOIN #__users u ON u.id = n.author_id
LEFT JOIN #__categories c ON c.id = n.category_id
WHERE n.status = 'published'
AND n.published_at <= NOW()
ORDER BY n.published_at DESC
LIMIT 10
";
$jsqldb->setSQLQuery($selectQuery);
$jsqldb->execute();
$articles = $jsqldb->getResults();
? TUTF8 Grapheme Engine
? JSQLDB ???????????? ??? TUTF8 Engine ??? Ascoos OS, ? ?????? ?????????? ?? ????? ??? ??? ??????????? ???????? ?? ???? ?? Grapheme Clusters.
??????????:
| ?????????? | strlen() | mb_strlen() | utf8->strlen() |
|-----------|----------|-------------|----------------|
| ? | 4 | 1 | 1 |
| ?? | 8 | 2 | 1 |
| ?? | 8 | 2 | 1 |
???? ???????????:
-
????? ??????????
-
????? indexing
-
??????? ???????? ??????????
-
????? ??????????? ?? ???? ??? ???????
?????
? JSQLDB ???????? ????? ??? Ascoos OS ??? ?????????? ??? ??? ??????? ????? ??? ?????.
|