- 浏览: 183634 次
- 性别:
- 来自: 北京
最新评论
-
heping45:
有待进步,不知所云
WEB流程图(jquery实现) -
zhoupuyue:
html有一个小错误:<script> $(fu ...
漂亮的Jquery的日期控件(精减) -
dcdc723:
happy175 写道大家是怎么用的啊,我的怎么没有反应?这是 ...
漂亮的Jquery的日期控件(精减) -
happy175:
大家是怎么用的啊,我的怎么没有反应?这是我的代码:
<! ...
漂亮的Jquery的日期控件(精减) -
nianshi:
加上Html文件多好啊
漂亮的Jquery的日期控件(精减)
<?php // Setting up nodes: // // CassandraConn::add_node('192.168.1.1', 9160); // CassandraConn::add_node('192.168.1.2', 5000); // // Querying: // // $users = new CassandraCF('Keyspace1', 'Users'); // $users->insert('1', array('email' => 'hoan.tonthat@gmail.com', 'password' => 'test')); // $users->get('1'); // $users->multiget(array(1, 2)); // $users->get_count('1'); // $users->get_range('1', '10'); // $users->remove('1'); // $users->remove('1', 'password'); // class CassandraConn { const DEFAULT_THRIFT_PORT = 9160; static private $connections = array(); static private $last_error; static public function add_node($host, $port=self::DEFAULT_THRIFT_PORT, $framed_transport=false, $send_timeout=null, $recv_timeout=null, $persist=false) { try { // Create Thrift transport and binary protocol cassandra client $socket = new TSocket($host, $port, $persist); if($send_timeout) $socket->setSendTimeout($send_timeout); if($recv_timeout) $socket->setRecvTimeout($recv_timeout); if($framed_transport) { $transport = new TFramedTransport($socket, true, true); } else { $transport = new TBufferedTransport($socket, 1024, 1024); } $client = new CassandraClient(new TBinaryProtocolAccelerated($transport)); // Store it in the connections self::$connections[] = array( 'transport' => $transport, 'client' => $client ); // Done return TRUE; } catch (TException $tx) { self::$last_error = 'TException: '.$tx->getMessage() . "\n"; } return FALSE; } // Default client static public function get_client($write_mode = false) { // * Try to connect to every cassandra node in order // * Failed connections will be retried // * Once a connection is opened, it stays open // * TODO: add random and round robin order // * TODO: add write-preferred and read-preferred nodes shuffle(self::$connections); foreach(self::$connections as $connection) { try { $transport = $connection['transport']; $client = $connection['client']; if(!$transport->isOpen()) { $transport->open(); } return $client; } catch (TException $tx) { self::$last_error = 'TException: '.$tx->getMessage() . "\n"; continue; } } throw new Exception("Could not connect to a cassandra server"); } } class CassandraUtil { // UUID static public function uuid1($node="", $ns="") { return UUID::generate(UUID::UUID_TIME,UUID::FMT_STRING, $node, $ns); } // Time static public function get_time() { // By Zach Buller (zachbuller@gmail.com) $time1 = microtime(); settype($time1, 'string'); //needs converted to string, otherwise will omit trailing zeroes $time2 = explode(" ", $time1); $time2[0] = preg_replace('/0./', '', $time2[0], 1); $time3 = ($time2[1].$time2[0])/100; return $time3; } } class CassandraCF { const DEFAULT_ROW_LIMIT = 100; // default max # of rows for get_range() const DEFAULT_COLUMN_TYPE = "UTF8Type"; const DEFAULT_SUBCOLUMN_TYPE = null; public $keyspace; public $column_family; public $is_super; public $read_consistency_level; public $write_consistency_level; public $column_type; // CompareWith (TODO: actually use this) public $subcolumn_type; // CompareSubcolumnsWith (TODO: actually use this) public $parse_columns; /* BytesType: Simple sort by byte value. No validation is performed. AsciiType: Like BytesType, but validates that the input can be parsed as US-ASCII. UTF8Type: A string encoded as UTF8 LongType: A 64bit long LexicalUUIDType: A 128bit UUID, compared lexically (by byte value) TimeUUIDType: a 128bit version 1 UUID, compared by timestamp */ public function __construct($keyspace, $column_family, $is_super=false, $column_type=self::DEFAULT_COLUMN_TYPE, $subcolumn_type=self::DEFAULT_SUBCOLUMN_TYPE, $read_consistency_level=cassandra_ConsistencyLevel::ONE, $write_consistency_level=cassandra_ConsistencyLevel::ZERO) { // Vars $this->keyspace = $keyspace; $this->column_family = $column_family; $this->is_super = $is_super; $this->column_type = $column_type; $this->subcolumn_type = $subcolumn_type; $this->read_consistency_level = $read_consistency_level; $this->write_consistency_level = $write_consistency_level; // Toggles parsing columns $this->parse_columns = true; } public function get($key, $super_column=NULL, $slice_start="", $slice_finish="", $column_reversed=False, $column_count=100) { $column_parent = new cassandra_ColumnParent(); $column_parent->column_family = $this->column_family; $column_parent->super_column = $this->unparse_column_name($super_column, true); $slice_range = new cassandra_SliceRange(); $slice_range->count = $column_count; $slice_range->reversed = $column_reversed; $slice_range->start = $slice_start ? $this->unparse_column_name($slice_start, false) : ""; $slice_range->finish = $slice_finish ? $this->unparse_column_name($slice_finish, false) : ""; $predicate = new cassandra_SlicePredicate(); $predicate->slice_range = $slice_range; $client = CassandraConn::get_client(); $resp = $client->get_slice($this->keyspace, $key, $column_parent, $predicate, $this->read_consistency_level); if($super_column) { return $this->supercolumns_or_columns_to_array($resp, false); } else { return $this->supercolumns_or_columns_to_array($resp); } } public function multiget($keys, $slice_start="", $slice_finish="") { $column_parent = new cassandra_ColumnParent(); $column_parent->column_family = $this->column_family; $column_parent->super_column = NULL; $slice_range = new cassandra_SliceRange(); $slice_range->start = $slice_start ? $this->unparse_column_name($slice_start, false) : ""; $slice_range->finish = $slice_finish ? $this->unparse_column_name($slice_finish, false) : ""; $predicate = new cassandra_SlicePredicate(); $predicate->slice_range = $slice_range; $client = CassandraConn::get_client(); $resp = $client->multiget_slice($this->keyspace, $keys, $column_parent, $predicate, $this->read_consistency_level); $ret = null; // foreach($keys as $sk => $k) { // $ret[$k] = $this->supercolumns_or_columns_to_array($resp[$k]); // } foreach($resp as $key => $val) { $ret[$key] = $this->supercolumns_or_columns_to_array($val); } return $ret; } public function get_count($key, $super_column=null) { $column_path = new cassandra_ColumnPath(); $column_path->column_family = $this->column_family; $column_path->super_column = $super_column; $client = CassandraConn::get_client(); $resp = $client->get_count($this->keyspace, $key, $column_path, $this->read_consistency_level); return $resp; } public function get_range($start_key="", $end_key="", $row_count=self::DEFAULT_ROW_LIMIT, $slice_start="", $slice_finish="") { $column_parent = new cassandra_ColumnParent(); $column_parent->column_family = $this->column_family; $column_parent->super_column = NULL; $slice_range = new cassandra_SliceRange(); $slice_range->start = $slice_start ? $this->unparse_column_name($slice_start, true) : ""; $slice_range->finish = $slice_finish ? $this->unparse_column_name($slice_finish, true) : ""; $predicate = new cassandra_SlicePredicate(); $predicate->slice_range = $slice_range; $key_range = new cassandra_KeyRange(); $key_range->start_key = $start_key; $key_range->end_key = $end_key; $key_range->count = $row_count; $client = CassandraConn::get_client(); $resp = $client->get_range_slices($this->keyspace, $column_parent, $predicate, $key_range, $this->read_consistency_level); return $this->keyslices_to_array($resp); } public function insert($key, $columns) { $timestamp = CassandraUtil::get_time(); $cfmap = array(); $cfmap[$key][$this->column_family] = $this->array_to_mutation($columns, $timestamp); $client = CassandraConn::get_client(); $resp = $client->batch_mutate($this->keyspace, $cfmap, $this->write_consistency_level); return $resp; } public function remove($key, $column_name=null) { $timestamp = CassandraUtil::get_time(); $column_path = new cassandra_ColumnPath(); $column_path->column_family = $this->column_family; if($this->is_super) { $column_path->super_column = $this->unparse_column_name($column_name, true); } else { $column_path->column = $this->unparse_column_name($column_name, false); } $client = CassandraConn::get_client(); $resp = $client->remove($this->keyspace, $key, $column_path, $timestamp, $this->write_consistency_level); return $resp; } // Wrappers public function get_list($key, $key_name='key', $slice_start="", $slice_finish="") { // Must be on supercols! $resp = $this->get($key, NULL, $slice_start, $slice_finish); $ret = array(); foreach($resp as $_key => $_value) { $_value[$key_name] = $_key; $ret[] = $_value; } return $ret; } public function get_range_list($key_name='key', $start_key="", $end_key="", $row_count=self::DEFAULT_ROW_LIMIT, $slice_start="", $slice_finish="") { $resp = $this->get_range($start_key, $end_key, $row_count, $slice_start, $slice_finish); $ret = array(); foreach($resp as $_key => $_value) { if(!empty($_value)) { // filter nulls $_value[$key_name] = $_key; $ret[] = $_value; } } return $ret; } public function multiget_list($keys, $key_name='key', $slice_start="", $slice_finish="") { $resp = $this->multiget($keys, $slice_start, $slice_finish); $ret = array(); foreach($resp as $_key => $_value) { $_value[$key_name] = $_key; $ret[] = $_value; } return $ret; } // Helpers for parsing Cassandra's thrift objects into PHP arrays public function keyslices_to_array($keyslices) { $ret = null; foreach($keyslices as $keyslice) { $key = $keyslice->key; $columns = $keyslice->columns; $ret[$key] = $this->supercolumns_or_columns_to_array($columns); } return $ret; } public function supercolumns_or_columns_to_array($array_of_c_or_sc, $parse_as_columns=true) { $ret = null; foreach($array_of_c_or_sc as $c_or_sc) { if($c_or_sc->column) { // normal columns $name = $this->parse_column_name($c_or_sc->column->name, $parse_as_columns); $value = $c_or_sc->column->value; $ret[$name] = $value; } else if($c_or_sc->super_column) { // super columns $name = $this->parse_column_name($c_or_sc->super_column->name, $parse_as_columns); $columns = $c_or_sc->super_column->columns; $ret[$name] = $this->columns_to_array($columns); } } return $ret; } public function columns_to_array($array_of_c) { $ret = null; foreach($array_of_c as $c) { $name = $this->parse_column_name($c->name, false); $value = $c->value; $ret[$name] = $value; } return $ret; } // Helpers for turning PHP arrays into Cassandra's thrift objects public function array_to_mutation($array, $timestamp=null) { if(empty($timestamp)) $timestamp = CassandraUtil::get_time(); $c_or_sc = $this->array_to_supercolumns_or_columns($array, $timestamp); $ret = null; foreach($c_or_sc as $row) { $mutation = new cassandra_Mutation(); $mutation->column_or_supercolumn = $row; $ret[] = $mutation; } return $ret; } public function array_to_supercolumns_or_columns($array, $timestamp=null) { if(empty($timestamp)) $timestamp = CassandraUtil::get_time(); $ret = null; foreach($array as $name => $value) { $c_or_sc = new cassandra_ColumnOrSuperColumn(); if(is_array($value)) { $c_or_sc->super_column = new cassandra_SuperColumn(); $c_or_sc->super_column->name = $this->unparse_column_name($name, true); $c_or_sc->super_column->columns = $this->array_to_columns($value, $timestamp); $c_or_sc->super_column->timestamp = $timestamp; } else { $c_or_sc = new cassandra_ColumnOrSuperColumn(); $c_or_sc->column = new cassandra_Column(); $c_or_sc->column->name = $this->unparse_column_name($name, true); $c_or_sc->column->value = $this->to_column_value($value);; $c_or_sc->column->timestamp = $timestamp; } $ret[] = $c_or_sc; } return $ret; } public function array_to_columns($array, $timestamp=null) { if(empty($timestamp)) $timestamp = CassandraUtil::get_time(); $ret = null; foreach($array as $name => $value) { $column = new cassandra_Column(); $column->name = $this->unparse_column_name($name, false); $column->value = $this->to_column_value($value); $column->timestamp = $timestamp; $ret[] = $column; } return $ret; } public function to_column_value($thing) { if($thing === null) return ""; return $thing; } // ARGH public function parse_column_name($column_name, $is_column=true) { if(!$this->parse_columns) return $column_name; if(!$column_name) return NULL; $type = $is_column ? $this->column_type : $this->subcolumn_type; if($type == "LexicalUUIDType" || $type == "TimeUUIDType") { return UUID::convert($column_name, UUID::FMT_BINARY, UUID::FMT_STRING); } else if($type == "LongType") { return $this->unpack_longtype($column_name); } else { return $column_name; } } public function unparse_column_name($column_name, $is_column=true) { if(!$this->parse_columns) return $column_name; if(!$column_name) return NULL; $type = $is_column ? $this->column_type : $this->subcolumn_type; if($type == "LexicalUUIDType" || $type == "TimeUUIDType") { return UUID::convert($column_name, UUID::FMT_STRING, UUID::FMT_BINARY); } else if($type == "LongType") { return $this->pack_longtype($column_name); } else { return $column_name; } } // See http://webcache.googleusercontent.com/search?q=cache:9jjbeSy434UJ:wiki.apache.org/cassandra/FAQ+cassandra+php+%22A+long+is+exactly+8+bytes%22&cd=1&hl=en&ct=clnk&gl=us public function pack_longtype($x) { return pack('C8', ($x >> 56) & 0xff, ($x >> 48) & 0xff, ($x >> 40) & 0xff, ($x >> 32) & 0xff, ($x >> 24) & 0xff, ($x >> 16) & 0xff, ($x >> 8) & 0xff, $x & 0xff ); } public function unpack_longtype($x) { $a = unpack('C8', $x); return ($a[1] << 56) + ($a[2] << 48) + ($a[3] << 40) + ($a[4] << 32) + ($a[5] << 24) + ($a[6] << 16) + ($a[7] << 8) + $a[8]; } }
发表评论
-
cgi 启动问题
2011-09-23 16:08 814/usr/local/bin/spawn-fcgi -a 12 ... -
Using PDO Objects in PHP 5 - Finding insertion IDs for database rows
2010-12-22 13:07 1029As I pointed out in the section ... -
Using PDO Objects in PHP 5 - Running queries against a specific
2010-12-22 12:41 1033Naturally, after learning ho ... -
Using PDO Objects in PHP 5 - Using the PDO extension
2010-12-22 12:13 941Definitely, a good point to ... -
discuz7.2 二次开发---------后台添加菜单
2010-09-15 15:13 1676menu.inc.php showmenu('te ... -
discuz 文件说明
2010-09-10 15:39 7385文件颜色说明:红色:程序核心文件,修改这类文件时千万要注意安全 ... -
discuz 7.2数据库表结构
2010-09-09 15:54 5869discuz 7.2数据库结构表 discuz, 结构, 数据 ... -
smarty变量操作符
2010-09-05 14:17 820capitalize [首字母大写] count_char ... -
eclipse自动补全
2010-09-05 11:11 1319eclipse自动补全配置 -
根据IP自动切换城市(腾讯网接口)
2010-05-27 10:02 2757<script src="http://fw. ... -
常用类
2010-05-04 10:41 755// 过滤html代码 function SpHtml2 ... -
用jcrop裁剪图片
2010-04-16 14:42 1137<? if ($_SERVER['REQUEST_ME ... -
图片加水印
2010-04-16 09:59 766$file="7.jpg"; $widt ... -
php创建验证字符图片
2010-04-16 09:24 818<?php //(1)创建背景图像。建立一幅150* ... -
php加密解密
2010-04-15 17:07 1183<? define('UC_KEY','finger ... -
icon生成类
2010-04-14 17:40 924<?php $output = "&qu ... -
jquery 操作复选框 取值
2010-02-26 17:50 1347<? //引入类 ?> <!DOCTY ... -
smarty 基本配置、应用
2010-02-23 21:40 1206//以下为:smart_inc.php include_o ... -
PHP 通用分页类PagerBox及使用
2010-02-04 21:36 1484<?php //使用实例 //$totalNum = ... -
PHP SOCKET()方式发送邮件(附php类)
2010-02-03 21:48 2383fsockopen(string hostname, ...
相关推荐
npm install connect-cassandra-cql 用法 快递4 var express = require ( 'express' ) , cookieParser = require ( 'cookie-parser' ) , session = require ( 'express-session' ) , CassandraCqlStore = ...
kafka-connect-ui 这是Kafka Connect的网络工具,用于设置和管理多个连接集群的连接器。现场演示与Docker独立运行docker run --rm -it -p 8000:8000 \ -e "CONNECT_URL=...
Apache Spark 的公共访问层支持从多个 NoSQL 和 JDBC 数据源检索原始数据。 以下大数据源支持读取请求: 卡桑德拉弹性搜索HBase MongoDB 实木复合地板此外,该项目还为与分析相关的数据源提供了越来越多的连接器: ...
Kafka Connect配置的DNS解析 这是一个小型库,可利用SRV类型的DNS记录来避免对Kafka Connect连接器配置中的服务器列表进行硬编码什么是SRV DNS记录? DNS最著名的记录类型是A和CNAME,这两种记录类型都使我们能够将...
借助带NoSQL的DataStax Astra:trade_mark:和云中的Apache Cassandra:trade_mark:来使用!目录设置1.1创建帐号在开始使用我们的工具之前,您需要在上创建一个帐户1.2创建新数据库然后,您将被定向到主页。 找到按钮...
达卡斯Cassandra DAO建设者的承诺注意:现在它根本不起作用! 要求节点> = 4.2 const dacas = require ( 'dacas' ) ; dacas . connect ( 'keyspace' , { contactPoints : [ '127.0.0.1' ] } ) . then ( work , die )...
connect(srv::String = "localhost", prt::Int = 9042) function disconnect(con::CQLConnection) 打开和关闭与 Cassandra 服务器的连接。 function query(con::CQLConnection, msg::String) '普通' 同步查询 将等待...
Connect to various data sources such as relational databases (Microsoft SQL Server, MySQL), non-relational databases (NoSQL such as MongoDB, Cassandra), write your own custom SQL, join and blend data ...
Connect to various data sources such as relational databases (Microsoft SQL Server, MySQL), non-relational databases (NoSQL such as MongoDB, Cassandra), write your own custom SQL, join and blend data ...
minicql.connect('server_name', 'keyspace')cur = conn.cursor()cur.execute("select * from test")for c in cur.fetchall(): print(c)conn.close()使用Cosmos DB cassandra API import minicqlconn = minicql....
It provides support for multiple types of relational databases, such as MySQL, Microsoft SQL Server, Sybase, Oracle, DB2, Apache Cassandra, Derby and Hive, Informix, MongoDB, PostgreSQL, SQLite and ...
so we will dive into MariaDB’s clustering and replication features, learning how to efficiently search and index our data, work with NoSQL-style data, and connect MariaDB with a Cassandra cluster....
Lenses提供SQL(用于数据浏览和Kafka流),Kafka Connect连接器管理,集群监视等。 您可以在上找到更多 流React器 用于构建实时摄取管道的组件的集合。 Kafka兼容性 Kafka 2.5+(汇合5.5)-物流React器2.0.0+ ...
#用法示例: ./gradlew jar./run.sh --name dataset --size 10000000 --min.length 1024 --max.length 5000 --producer.config producer.properties --zk.connect localhost:2181 --kafka.connect localhost:9092 -...
You will then find out how to connect with data stores such as MySQL, MongoDB, Cassandra, and Hadoop. You'll expand your skills throughout, getting familiarized with the various data sources (Github...
You will then find out how to connect with data stores such as MySQL, MongoDB, Cassandra, and Hadoop. You'll expand your skills throughout, getting familiarized with the various data sources (Github...
流处理车间流处理讲习班,其中包括使用Apache ... 本次研讨会中使用的一些技术是阿帕奇·卡夫卡(Apache Kafka) StreamSets数据收集器阿帕奇NiFi Kafka Connect 数据库Spark结构化流MQTT Elasticsearch和Cassandra
4.2.4 Windows Azure Connect 152 4.2.5 Windows Azure CDN 153 4.2.6 Fabric控制器 153 4.2.7 Windows Azure应用场景 155 4.3 微软云关系数据库SQL Azure 157 4.3.1 SQL Azure概述 157 4.3.2 SQL Azure关键技术 158...