package
com.alibaba.dw.thrift.client;
import
java.io.IOException;
import
java.io.UnsupportedEncodingException;
import
org.apache.cassandra.config.DatabaseDescriptor;
import
org.apache.cassandra.db.Column;
import
org.apache.cassandra.db.ColumnFamily;
import
org.apache.cassandra.db.RowMutation;
import
org.apache.cassandra.db.filter.QueryPath;
import
org.apache.cassandra.io.util.DataOutputBuffer;
import
java.net.InetAddress;
import
org.apache.cassandra.net.Message;
import
org.apache.cassandra.net.MessagingService;
import
org.apache.cassandra.service.StorageService;
/**
* TODO Comment of BinaryMemtableTest
*
* @author aaron.guop
*/
public
class
BinaryMemtableTest {
/**
* @param args
* @throws IOException
* @throws InterruptedException
*/
public
static
void
main(String[] args) throws
IOException, InterruptedException {
System.setProperty("storage-config"
, "D:\\apache-cassandra-0.6.1\\conf"
);
StorageService.instance.initClient();
while
(StorageService.instance.getNaturalEndpoints("Keyspace1"
, "bmt"
).isEmpty()) {
Thread.sleep(1 * 1000);
}
doInsert();
StorageService.instance.stopClient();
}
/**
* @throws UnsupportedEncodingException
*/
private
static
void
doInsert() throws
UnsupportedEncodingException {
String keyspace = "Keyspace1"
;
String cfName = "Member"
;
String memberID = "bmt"
;
/* Create a column family */
ColumnFamily columnFamily = ColumnFamily.create(keyspace, cfName);
//while (values.hasNext()) {
String SuperColumnName = "SuperColumnName"
;
String ColumnName = "ColumnName"
;
String ColumnValue = "ColumnValue"
;
long
timestamp = 0;
columnFamily.addColumn(new
QueryPath(cfName, SuperColumnName.getBytes("UTF-8"
), ColumnName
.getBytes("UTF-8"
)), ColumnValue.getBytes(), timestamp);
//}
/* Get serialized message to send to cluster */
Message message = createMessage(keyspace, memberID, cfName, columnFamily);
for
(InetAddress endpoint : StorageService.instance.getNaturalEndpoints(keyspace, memberID)) {
/* Send message to end point */
MessagingService.instance.sendOneWay(message, endpoint);
System.out.println("Send message to "
+ endpoint.toString());
}
}
public
static
Message createMessage(String Keyspace, String Key, String CFName,
ColumnFamily columnFamile) {
DataOutputBuffer bufOut = new
DataOutputBuffer();
Column column;
/*
* Get the first column family from list, this is just to get past
* validation
*/
ColumnFamily baseColumnFamily = new
ColumnFamily(CFName, "Standard"
, DatabaseDescriptor
.getComparator(Keyspace, CFName), DatabaseDescriptor.getSubComparator(Keyspace,
CFName));
bufOut.reset();
try
{
ColumnFamily.serializer().serializeWithIndexes(columnFamile, bufOut);
byte
[] data = new
byte
[bufOut.getLength()];
System.arraycopy(bufOut.getData(), 0, data, 0, bufOut.getLength());
column = new
Column(columnFamile.name().getBytes("UTF-8"
), data, 0, false);
baseColumnFamily.addColumn(column);
} catch
(IOException e) {
throw
new
RuntimeException(e);
}
RowMutation rm = new
RowMutation(Keyspace, Key);
rm.add(baseColumnFamily);
try
{
/* Make message */
return
rm.makeRowMutationMessage(StorageService.Verb.BINARY);
} catch
(IOException e) {
throw
new
RuntimeException(e);
}
}
}
相关推荐
Cassandra(apache-cassandra-3.11.11-bin.tar.gz)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身...
5. **数据模型**:理解Cassandra的数据模型,如超级列(Super Column)、列族和行键(Row Key),对于有效使用phpcassa至关重要。 6. **安装和配置**:在PHP项目中集成phpcassa,需要正确配置Cassandra服务器地址、...
Cassandra(apache-cassandra-3.0.25-bin.tar.gz)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身...
apache-cassandra-0.6.1-bin.tar.gzapache-cassandra-0.6.1-bin.tar.gzapache-cassandra-0.6.1-bin.tar.gzapache-cassandra-0.6.1-bin.tar.gzapache-cassandra-0.6.1-bin.tar.gzapache-cassandra-0.6.1-bin.tar.gz
Cassandra(apache-cassandra-4.0.1-bin.tar.gz)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身...
官方离线安装包,亲测可用
cassandra-driver-core,A driver for Apache Cassandra 1.2+ that works exclusively with the Cassandra Query Language version 3 (CQL3) and Cassandra's binary protocol.
cassandra-thrift cassandra-thrift cassandra-thrift cassandra-thrift cassandra-thrift cassandra-thrift
开发者还可以利用它的数据映射功能,将Cassandra表映射为Python类,简化数据操作。 **Python库标签**:“开发语言”表明cassandra_driver是作为开发工具使用的,帮助开发者构建应用;“后端”意味着它主要用于...
生产环境中的节点内存通常在8GB至16GB之间,但在某些场景下,如纽约时报使用亚马逊云服务处理大量数据时,可能需要更高配置,如32GB甚至更高。 - **CPU**:Cassandra的高并发特性使其受益于多核处理器。在写密集型...
本篇文章将详细探讨一个名为`cassandra-dataset-manager-0.2.tar.gz`的Python库,它与Apache Cassandra数据库管理紧密相关,提供了方便的数据集管理和操作功能。 首先,我们来了解一下Apache Cassandra。Cassandra...
- **CAS(Compare and Set)**:Cassandra的更新操作可以使用IF条件,实现原子性的比较和设置,如果条件不满足,则操作失败。 - **Quorum读写**:Quorum级别读写确保超过半数的副本成功,从而保证强一致性。但当...
安装完成后,即可在Python代码中导入并使用`cassandra-driver`,编写与Cassandra数据库交互的应用程序。 总的来说,`cassandra-driver`为Python开发者提供了一个强大且易于使用的接口,使得在Python中与Cassandra...
5. ** Tombstones**:Cassandra使用Tombstones来标记已删除的数据,以便在后台垃圾收集过程中清理。 6. **读写性能**:Cassandra优化了读写性能,特别是在大型数据集上,通过数据分区和数据复制策略,可以实现高...
Cassandra采用分片(Sharding)和复制(Replication)策略,将数据分布在多个节点上,以实现水平扩展。每个节点都存储一部分数据,并且可以处理来自客户端的读写请求。数据按照分区键(Partition Key)进行分布,而...
5. **Compaction策略**:数据压缩是Cassandra管理大量数据的重要手段,3.11.13版本可能包含了更智能的Compaction策略,用于合并SSTable文件,减少磁盘空间占用,同时提升查询效率。 6. **CQL (Cassandra Query ...
首先,`apache-cassandra-2.2.14-bin.tar.gz` 是 Apache Cassandra 2.2.14 版本的二进制发行包,通常用于 Linux 平台。这个压缩包包含了运行 Cassandra 所需的所有文件,包括可执行文件、配置文件、库文件等。你可以...
5. **Read/Write 路由**:Cassandra 使用 Partitioner(分区器)将数据按照键(Key)划分到不同的节点,读写操作直接路由到负责该键的节点,提高效率。 6. ** Tombstones**:Cassandra 使用 Tombstones 来标记已...
用户通常需要通过kubectl或Helm来部署Cassandra-Operator,然后创建CassandraDatacenter资源,Operator将根据定义创建相应的Cassandra集群。源代码中可能包含部署指南和示例配置文件,供开发者参考。 6. **社区与...
Cassandra exporter 是 cassandra 的数据导出/导入工具,它使用简单,适用于 unicode 和复杂数据类型。 它是用 Javascript 开发的,导出的数据存储在 JSON 格式的文件中。 为什么是另一个工具? Cassandra 有一些很...