설명 없음

Harpreet Sawhney 3d65e205b4 Return stream id to the pool in case of a write error. 12 년 전
website 193df48fa6 added links to the new mailing list / google group 12 년 전
.travis.yml b4cfd219be added Travis CI support 12 년 전
AUTHORS 9833b09790 Added missing error handling to RandomUUID function 12 년 전
LICENSE 4f8922a0cf added proper LICENSE and AUTHORS files 13 년 전
README.md 9bfc6217a4 Fix duplicate protocol 12 년 전
cassandra_test.go 788922259a added password authentication support for Cassandra 2 12 년 전
cluster.go 441cb3e513 increase default connection timeout significantly 12 년 전
conn.go 3d65e205b4 Return stream id to the pool in case of a write error. 12 년 전
conn_test.go 3f2ab75e2d also increase the timeout in the testcase 12 년 전
doc.go c9fd6df0c6 published first draft of the v2 rewrite 12 년 전
frame.go 788922259a added password authentication support for Cassandra 2 12 년 전
marshal.go 064d786c82 When uunmarshalling uuid's, check if data is empty 12 년 전
marshal_test.go 2cdc9fb461 Allow uuid's to be unmarsalled into strings and bytes 12 년 전
session.go 9be9717d49 docs: document typical usage of a session object 12 년 전
topology.go e94363c3df check for nil pointers before dereferencing 12 년 전
uuid.go 60226544cb Fix return statements 12 년 전
uuid_test.go 7251fce9bc Fixed test of RandomUUID 12 년 전

README.md

gocql

Build Status GoDoc

Package Status: Alpha

Package gocql implements a fast and robust Cassandra client for the Go programming language.

Project Website: http://gocql.github.io/
API documentation: http://godoc.org/github.com/gocql/gocql
Discussions: https://groups.google.com/forum/#!forum/gocql

Installation

go get github.com/gocql/gocql

Features

  • Modern Cassandra client for Cassandra 1.2 and 2.0
  • Automatic type conversations between Cassandra and Go
    • Support for all common types including sets, lists and maps
    • Custom types can implement a Marshaler and Unmarshaler interface
    • Strict type conversations without any loss of precision
    • Built-In support for UUIDs (version 1 and 4)
  • Support for logged, unlogged and counter batches
  • Cluster management
    • Automatic reconnect on connection failures with exponential falloff
    • Round robin distribution of queries to different hosts
    • Round robin distribution of queries to different connections on a host
    • Each connection can execute up to 128 concurrent queries
  • Iteration over paged results with configurable page size
  • Optional frame compression (using snappy)
  • Automatic query preparation
  • Support for query tracing

Please visit the Roadmap page to see what is on the horizion.

Example

package main

import (
	"fmt"
	"log"

	"github.com/gocql/gocql"
)

func main() {
	// connect to the cluster
	cluster := gocql.NewCluster("192.168.1.1", "192.168.1.2", "192.168.1.3")
	cluster.Keyspace = "example"
	cluster.Consistency = gocql.Quorum
	session, _ := cluster.CreateSession()
	defer session.Close()

	// insert a tweet
	if err := session.Query(`INSERT INTO tweet (timeline, id, text) VALUES (?, ?, ?)`,
		"me", gocql.TimeUUID(), "hello world").Exec(); err != nil {
		log.Fatal(err)
	}

	var id gocql.UUID
	var text string

	// select a single tweet
	if err := session.Query(`SELECT id, text FROM tweet WHERE timeline = ? LIMIT 1`,
		"me").Consistency(gocql.One).Scan(&id, &text); err != nil {
		log.Fatal(err)
	}
	fmt.Println("Tweet:", id, text)

	// list all tweets
	iter := session.Query(`SELECT id, text FROM tweet WHERE timeline = ?`, "me").Iter()
	for iter.Scan(&id, &text) {
		fmt.Println("Tweet:", id, text)
	}
	if err := iter.Close(); err != nil {
		log.Fatal(err)
	}
}

Other Projects

  • cqlc generates gocql compliant code from your Cassandra schema so that you can write type safe CQL statements in Go with a natural query syntax.
  • gocqldriver is the predecessor of gocql based on Go's "database/sql" package. This project isn't maintained anymore, because Cassandra wasn't a good fit for the traditional "database/sql" API. Use this package instead.

License

Copyright (c) 2012-2014 The gocql Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.