今天看到一篇Cassandra的技术文章,原文在这里
呵呵,Cassandra 到时其次,不过ruby 的确很性感
java要写这么多
package com.test.cassandra;|
import java.io.UnsupportedEncodingException;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.TException;
import org.apache.cassandra.thrift.Cassandra;
import org.apache.cassandra.thrift.Column;
import org.apache.cassandra.thrift.ColumnOrSuperColumn;
import org.apache.cassandra.thrift.ColumnPath;
import org.apache.cassandra.thrift.ConsistencyLevel;
import org.apache.cassandra.thrift.InvalidRequestException;
import org.apache.cassandra.thrift.NotFoundException;
import org.apache.cassandra.thrift.TimedOutException;
import org.apache.cassandra.thrift.UnavailableException;
/*
* 使 Java 客户端连接 Cassandra 并进行读写操作
* @author jimmy
* @date 2010-04-10
*/
public class JCassandraClient{
public static void main(String[] args) throws InvalidRequestException,
NotFoundException, UnavailableException, TimedOutException,
TException, UnsupportedEncodingException {
// 建立数据库连接
TTransport tr = new TSocket("192.168.10.2", 9160);
TProtocol proto = new TBinaryProtocol(tr);
Cassandra.Client client = new Cassandra.Client(proto);
tr.open();
String keyspace = "Keyspace1";
String cf = "Standard2";
String key = "studentA";
// 插入数据
long timestamp = System.currentTimeMillis();
ColumnPath path = new ColumnPath(cf);
path.setColumn("age".getBytes("UTF-8"));
client.insert(keyspace,key,path,"18".getBytes("UTF-8"),
timestamp,ConsistencyLevel.ONE);
path.setColumn("height".getBytes("UTF-8"));
client.insert(keyspace,key,path,"172cm".getBytes("UTF-8"),
timestamp,ConsistencyLevel.ONE);
// 读取数据
path.setColumn("height".getBytes("UTF-8"));
ColumnOrSuperColumn cc = client.get(keyspace, key, path, ConsistencyLevel.ONE);
Column c = cc.getColumn();
String v = new String(c.value, "UTF-8");
// 关闭数据库连接
tr.close();
}
}
PHP要写这么多
<?php
$GLOBALS['THRIFT_ROOT'] = '/usr/share/php/Thrift';
require_once
$GLOBALS['THRIFT_ROOT'].'/packages/cassandra/Cassandra.php';
require_once
$GLOBALS['THRIFT_ROOT'].'/packages/cassandra/cassandra_types.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TSocket.php';
require_once $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php';
require_once
$GLOBALS['THRIFT_ROOT'].'/transport/TFramedTransport.php';
require_once
$GLOBALS['THRIFT_ROOT'].'/transport/TBufferedTransport.php';
try {
// 建立 Cassandra 连接
$socket = new TSocket('192.168.10.2', 9160);
$transport = new TBufferedTransport($socket, 1024, 1024);
$protocol = new TBinaryProtocolAccelerated($transport);
$client = new CassandraClient($protocol);
$transport->open();
$keyspace = 'Keyspace1';
$keyUser = "studentA";
$columnPath = new cassandra_ColumnPath();
$columnPath->column_family = 'Standard1';
$columnPath->super_column = null;
$columnPath->column = 'age';
$consistency_level = cassandra_ConsistencyLevel::ZERO;
$timestamp = time();
$value = "18";
// 写入数据
$client->insert($keyspace, $keyUser, $columnPath, $value,
$timestamp, $consistency_level);
$columnParent = new cassandra_ColumnParent();
$columnParent->column_family = "Standard1";
$columnParent->super_column = NULL;
$sliceRange = new cassandra_SliceRange();
$sliceRange->start = "";
$sliceRange->finish = "";
$predicate = new cassandra_SlicePredicate();
list() = $predicate->column_names;
$predicate->slice_range = $sliceRange;
$consistency_level = cassandra_ConsistencyLevel::ONE;
$keyUser = studentA;
// 查询数据
$result = $client->get_slice($keyspace, $keyUser, $columnParent,
$predicate, $consistency_level);
// 关闭连接
$transport->close();
} catch (TException $tx) {
}?>
Python要写这么多
from thrift import Thrift
from thrift.transport import TTransport
from thrift.transport import TSocket
from thrift.protocol.TBinaryProtocol import
TBinaryProtocolAccelerated
from cassandra import Cassandra
from cassandra.ttypes import *
import time
import pprint
def main():
socket = TSocket.TSocket("192.168.10.2", 9160)
transport = TTransport.TBufferedTransport(socket)
protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport)
client = Cassandra.Client(protocol)
pp = pprint.PrettyPrinter(indent=2)
keyspace = "Keyspace1"
column_path = ColumnPath(column_family="Standard1", column="age")
key = "studentA"
value = "18 "
timestamp = time.time()
try:
# 打开数据库连接
transport.open()
# 写入数据
client.insert(keyspace,key,column_path,
value,timestamp,ConsistencyLevel.ZERO)
# 查询数据
column_parent = ColumnParent(column_family="Standard1")
slice_range = SliceRange(start="", finish="")
predicate = SlicePredicate(slice_range=slice_range)
result = client.get_slice(keyspace,key,column_parent,
predicate,ConsistencyLevel.ONE)
pp.pprint(result)
except Thrift.TException, tx:
print 'Thrift: %s' % tx.message
finally:
# 关闭连接
transport.close()
if __name__ == '__main__':
main()
C#要写这么多
namespace CshareCassandra{
using System;
using System.Collections.Generic;
using System.Diagnostics;
using Apache.Cassandra;
using Thrift.Protocol;
using Thrift.Transport;
class CassandraClient{
static void Main(string[] args){
// 建立数据库连接
TTransport transport = new TSocket("192.168.10.2", 9160);
TProtocol protocol = new TBinaryProtocol(transport);
Cassandra.Client client = new Cassandra.Client(protocol);
transport.Open();
System.Text.Encoding utf8Encoding = System.Text.Encoding.UTF8;
long timeStamp = DateTime.Now.Millisecond;
ColumnPath nameColumnPath = new ColumnPath(){
Column_family = "Standard1",
Column = utf8Encoding.GetBytes("age")};
// 写入数据
client.insert("Keyspace1","studentA",nameColumnPath,
utf8Encoding.GetBytes("18"),timeStamp, ConsistencyLevel.ONE);
// 读取数据
ColumnOrSuperColumn returnedColumn = client.get("Keyspace1",
"studentA", nameColumnPath, ConsistencyLevel.ONE);
Console.WriteLine("Keyspace1/Standard1: age: {0}, value: {1}",
utf8Encoding.GetString(returnedColumn.Column.Name),
utf8Encoding.GetString(returnedColumn.Column.Value));
// 关闭连接
transport.Close();
}
}}
Ruby来了
> require 'rubygems'
> require 'cassandra'
# 建立数据库连接
> cdb = Cassandra.new('Keyspace1',"192.168.10.1:9160", :retries => 3)
# 写入数据
> cdb.insert(:Standard1, 'studentA', {'age' => '18'})
# 读取数据
> cdb.get(:Standard1, :studentA)
# 关闭连接
> cdb.disconnect
分享到:
相关推荐
《Ruby.on.Rails.Web开发之旅》,作者:【德】Patrick Lenz,翻译:王德民、刘昕、裴立秋,出版社:人民邮电出版社,ISBN:9787115188526,PDF 格式,大小 144 Mb,被压缩为 3 部分,本资源是第二部分;第一部分下载...
[ | | ]Ruby的出色数据科学 Ruby中用于数据处理和分析的链接和资源是一个新的“性感”流行词,没有特定含义,但通常用于替代统计,科学计算,文本和数据挖掘与可视化,机器学习,数据处理和仓储以及任何形式的检索...
Ruby命令行可执行文件的完整解决方案。 Commander弥补了您熟悉和喜爱的其他与终端相关的库(OptionParser,HighLine)之间的鸿沟,同时提供了许多新功能和优雅的API。 特征 比烘烤饼干更容易 使用OptionParser解析...
在 Ruby 中构建 JSON 的最性感语言 我一直在用 、 和编写 JSON API,但它们都不能满足我的要求和用例。 jbuilder语法很冗长,partial和mixin的功能其实很弱 RABL 语法简单,但是用它写复杂的数据结构可读性不强 ...
如果你既想要erlang的并发分布式编程的理念又不喜欢erlang丑陋的停留在80年代的那种语法,又想要现代的性感的漂亮的时尚的Ruby/Python式的面向对象观而不满意其并发模型,那么,可以尝试Reia. 标签:Reia
动机使更加性感。 Python需要类似的东西。 测试必须有趣且容易。 大多数python开发人员使用python而不是ruby进行编码。 Ruby有Capistrano,Python有Fabric。 Ruby有Cucumber,Python有生菜。 我个人不喜欢在小型项目...
性感的Form.rb Ruby的简单HTML表单生成器,具有对许多流行的UI库(例如Bootstrap)的内置支持。 与Rails等任何Ruby Web框架完美搭配 产品特点 轻松生成表单,标签,输入,帮助文本和错误HTML标记 与许多UI库集成,...
Sublime Text – 性感的代码编辑器、程序员之必备神器!Sublime Text 是个功能强大的代码编辑器,也是HTML和散文先进的文本编辑器。其主要功能包括:Python的插件,完整的Python API , Goto功能,代码段,代码缩略...
bundle支持的版本Ruby 2.0、2.1、2.2、2.3、2.4和2.5(主干) Rails 3.2.x,4.0、4.1、4.2、5.0、5.1和5.2(边缘)用法捆绑了该gem后, validates方法将采用block参数,并将启用以下两个新的DSL: 原始代码(所谓的...
RubyOnRails 的 Kwicks 一个Rails插件,用于在您的应用程序上安装性感滑动面板。安装您可以通过以下方式安装此gem $ gem install jquery_kwicks_rails或者通过在您的Gemfile 中添加这一行将其捆绑到您的应用程序中 ...
RailsBridge 是一个非营利组织,致力于提升编程领域的多样性和包容性,特别是针对女性及她们的同伴。...如果你对 Ruby on Rails 或者编程多样性感兴趣,可以寻找最新的 RailsBridge 资源和活动来参与。
ruby 中异步承诺和 DCI 的混搭。 安装 将此行添加到应用程序的 Gemfile 中: gem 'mr_darcy' 然后执行: bundle 或者自己安装: gem install mr_darcy 文档 API 文档可在上 用法 警告 MrDarcy 绝对是实验性的...
Sublime Text 3是一个轻量、...相比于难于上手的Vim,浮肿沉重的Eclipse,VS,即便体积轻巧迅速启动的Editplus、Notepad++,在SublimeText 3面前大略显失色,无疑这款性感无比的编辑器是Coding和Writing最佳的选择;
Trans是用Bootstrap 4编写的超性感,时尚,深色的单页网站模板,可帮助您开始下一个网站项目。 在这里,您可以找到由制作的原始 在此项目中,我们使用了Jekyll,HAML和Sass。 先决条件: 节点: git: Ruby: ...
Cortana是Trulia的 (Ruby前端文档生成器)的一个不错的主题,灵感来自PebbleRoad的 。 检查 ##Usage 要安装最新版本的Hologram (必需): $ gem install hologram 要安装Cortana ,请使用 Bower : $ bower ...
性感关系 性感关系为您提供了一种在控制台中显示模型关系的性感方式。 只需添加到您的 Gemfile 并在 Rails 控制台中的模型上运行sexy_relations方法,就像这样...... User.sexy_relations 您可以传入关系类型的...
HighchartsOnRails 在 RoR 中使用高图的性感 DSL安装将此行添加到应用程序的 Gemfile 中: gem 'highcharts_on_rails'将此行添加到您的应用程序 application.js 文件中: //= require highcharts_on_rails/charts...
狂欢性感分类法 spree_sexy_taxonomies旨在扩展分类法和分类单元的显示和呈现的可能性。 此时,它会向 Spree::Taxon 模型添加一个“标题”图像,并将其与先前存在的“描述”属性一起显示在 taxons#show 页面上。 ...
我们建议将Inboxes与一起使用,因为它确实很性感。 请记住,不幸的是,收件箱保留了3个资源名称:“讨论”,“消息”和“发言人”。 从0.2.0版开始,可以将has_inboxes选项添加到任何模型中。 例如,它可以是...
使用 NHL GameCenter 内部 JSON API 以性感的方式提取和显示统计数据。 累计统计 游戏的名称是累积统计。 我们不想为玩家的统计数据提供一次性总付,而是希望显示玩家可以获得的许多统计数据的变化率,以显示比...