説明なし

Christoph Hack 5d6cb0f98b Merge pull request #84 from Zariel/prep-cache-errors 12 年 前
uuid e00bbf254f Tweaks FromTime documentation to match conventions 12 年 前
website 193df48fa6 added links to the new mailing list / google group 12 年 前
AUTHORS 295fea2e88 merged AUTHORS 12 年 前
LICENSE 4f8922a0cf added proper LICENSE and AUTHORS files 13 年 前
README.md f1fa78b40e Update README.md 12 年 前
cassandra_test.go 2d4323d020 better test cases 12 年 前
cluster.go b0851cd54f Removed unnecessary check for nil in cluster.go. Ran gofmt on files that 12 年 前
conn.go 5d6cb0f98b Merge pull request #84 from Zariel/prep-cache-errors 12 年 前
conn_test.go 2d4323d020 better test cases 12 年 前
doc.go c9fd6df0c6 published first draft of the v2 rewrite 12 年 前
frame.go 9193453e15 Added error codes 12 年 前
marshal.go a9158a564c Re-use UUID package for Timeuuid generation 12 年 前
marshal_test.go a25dee025e fixed long set/list items, added testcases 12 年 前
session.go 92ccf5fec6 cleaned up CAS branch a bit 12 年 前
topology.go e94363c3df check for nil pointers before dereferencing 12 年 前

README.md

gocql

Package Status: Alpha

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

Attention: This package is currently actively developed and the API may change in the future. The old "datbase/sql" based package is now called gocqldriver and is no longer maintained.

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

Installation

go get tux21b.org/v1/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"

	"tux21b.org/v1/gocql"
	"tux21b.org/v1/gocql/uuid"
)

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", uuid.TimeUUID(), "hello world").Exec(); err != nil {
		log.Fatal(err)
	}

	var id uuid.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)
	}
}

License

Copyright (c) 2012 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.