jkaufmann/php-cassandra-binary

https://github.com/evseevnn/php-cassandra-binary.git 的分支

dev-master 2014-07-25 10:21 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:54:26 UTC


README

PHP 的 Cassandra 客户端库,使用原生二进制协议。

安装

需要 PHP 5.4+,无需额外的库。

将依赖项添加到 composer.json

	...
	"require": {
		...
		"evseevnn/php-cassandra-binary": "dev-master"
	}
	...

基本用法

<?php

$nodes = [
	'127.0.0.1',
	'192.168.0.2:8882' => [
		'username' => 'admin',
		'password' => 'pass'
	]
];

// Connect to database.
$database = new Cassandra\Database($nodes, 'my_keyspace');
$database->connect();

// Run query.
$users = $database->query('SELECT * FROM "users" WHERE "id" = :id', ['id' => 'c5420d81-499e-4c9c-ac0c-fa6ba3ebc2bc']);

var_dump($users);
/*
	result:
		array(
			[0] => array(
				'id' => 'c5420d81-499e-4c9c-ac0c-fa6ba3ebc2bc',
				'name' => 'userName',
				'email' => 'user@email.com'
			)
		)
*/

// Keyspace can be changed at runtime
$database->setKeyspace('my_other_keyspace');
// Get from other keyspace
$urlsFromFacebook = $database->query('SELECT * FROM "urls" WHERE "host" = :host', ['host' => 'facebook.com']);

使用事务

	$database->beginBatch();
	// all INSERT, UPDATE, DELETE query append into batch query stack for execution after applyBatch
	$uuid = $database->query('SELECT uuid() as "uuid" FROM system.schema_keyspaces LIMIT 1;')[0]['uuid'];
	$database->query(
			'INSERT INTO "users" ("id", "name", "email") VALUES (:id, :name, :email);',
			[
				'id' => $uuid,
				'name' => 'Mark',
				'email' => 'mark@facebook.com'
			]
		);

	$database->query(
			'DELETE FROM "users" WHERE "email" = :email;',
			[
				'email' => 'durov@vk.com'
			]
		);
	$result = $database->applyBatch();

支持的数据类型

支持所有数据类型。

  • ascii, varchar, text 结果将是字符串。
  • bigint, counter, varint 使用 bcmath 转换为字符串。
  • blob 结果将是字符串。
  • boolean 结果也将是布尔值。
  • decimal 使用 bcmath 转换为字符串。
  • double, float, int 使用原生 PHP 数据类型。
  • timestamp 转换为整数。精度丢失毫秒。
  • uuid, timeuuid, inet 没有可用的原生 PHP 数据类型。转换为字符串。
  • list, set 转换为数组(数字键)。
  • map 转换为键数组。