TopGit theo dõi scylladb/gocqlx trên GitHub trong nhóm Backend, đã đạt 1.0k sao. All-In-One: CQL query builder, ORM and migration tool
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
GocqlX makes working with Scylla easy and less error-prone.
It’s inspired by Sqlx, a tool for working with SQL databases, but it goes beyond what Sqlx provides.
Compatibility
Versions of GocqlX prior to v3.0.0 are compatible with both Apache Cassandra’s gocql and ScyllaDB’s fork.
However, starting with v3.0.0, GocqlX exclusively supports the scylladb/gocql driver.
If you are using GocqlX v3.0.0 or newer, you must ensure your go.mod includes a replace directive to point to ScyllaDB’s fork:
// Use the latest version of scylladb/gocql; check for updates at https://github.com/scylladb/gocql/releases
replace github.com/gocql/gocql => github.com/scylladb/gocql v1.16.0
This is required because GocqlX relies on ScyllaDB-specific extensions and bug fixes introduced in the gocql fork. Attempting to use the standard gocql driver with GocqlX v3.0.0+ may lead to build or runtime issues.
Features
Binding query parameters from struct fields, map, or both
Scanning query results into structs based on field names
Convenient functions for common tasks such as loading a single row into a struct or all rows into a slice (list) of structs
Making any struct a UDT without implementing marshalling functions
GocqlX is fast. Its performance is comparable to raw driver. You can find some benchmarks here.
Subpackages provide additional functionality:
CQL query builder (package qb)
CRUD operations based on table model (package table)
Database migrations (package migrate)
Installation GocqlX
Add GocqlX to your Go module:
go get github.com/scylladb/gocqlx/v3
Installation schemagen
Unfortunately you can't install it via go install, since go.mod contains replace directive.
So, you have to check it out and install manually:
git clone [email protected]:scylladb/gocqlx.git
cd gocqlx/cmd/schemagen/
go install .
// metadata specifies table name and columns it must be in sync with schema.
var personMetadata = table.Metadata{
Name: "person",
Columns: []string{"first_name", "last_name", "email"},
PartKey: []string{"first_name"},
SortKey: []string{"last_name"},
}
// personTable allows for simple CRUD operations based on personMetadata.
var personTable = table.New(personMetadata)
// Person represents a row in person table.
// Field names are converted to snake case by default, no need to add special tags.
// A field will not be persisted by adding the `db:"-"` tag or making it unexported.
type Person struct {
FirstName string
LastName string
Email []string
HairColor string `db:"-"` // exported and skipped
eyeColor string // unexported also skipped
}
Bind data from a struct and insert a row:
p := Person{
"Michał",
"Matczuk",
[]string{"[email protected]"},
"red", // not persisted
"hazel" // not persisted
}
q := session.Query(personTable.Insert()).BindStruct(p)
if err := q.ExecRelease(); err != nil {
log.Fatal(err)
}
Load a single row to a struct:
p := Person{
"Michał",
"Matczuk",
nil, // no email
}
q := session.Query(personTable.Get()).BindStruct(p)
if err := q.GetRelease(&p); err != nil {
log.Fatal(err)
}
fmt.Println(p)
// stdout: {Michał Matczuk [[email protected]]}
Load all rows in to a slice:
var people []Person
q := session.Query(personTable.Select()).BindMap(qb.M{"first_name": "Michał"})
if err := q.SelectRelease(&people); err != nil {
log.Fatal(err)
}
fmt.Println(people)
// stdout: [{Michał Matczuk [[email protected]]}]
Generating table metadata with schemagen
Installation
go get -u "github.com/scylladb/gocqlx/v3/cmd/schemagen"
Usage:
schemagen [flags]
Flags:
-cluster string
a comma-separated list of host:port tuples (default "127.0.0.1")
-keyspace string
keyspace to inspect (required)
-output string
the name of the folder to output to (default "models")
-pkgname string
the name you wish to assign to your generated package (default "models")
Example:
Running the following command for examples keyspace:
You can find lots of examples in example_test.go.
There is also a runnable example app with its own go.mod in examples/basic.
Go and run them locally:
make run-scylla
make run-examples
Training
The course Using Scylla Drivers in Scylla University explains how to use drivers in different languages to interact with a Scylla cluster. The lesson, Golang and Scylla Part 3 - GoCQLX, goes over a sample application that, using GoCQLX, interacts with a three-node Scylla cluster. It connects to a Scylla cluster, displays the contents of a table, inserts and deletes data, and shows the contents of the table after each action. Scylla University includes other training material and online courses which will help you become a Scylla NoSQL database expert.
Performance
GocqlX performance is comparable to the raw gocql driver.
Below benchmark results running on my laptop.
This project is distributed under the Apache 2.0 license. See the LICENSE file for details.
It contains software from:
gocql project, licensed under the BSD license
sqlx project, licensed under the MIT license
Apache®, Apache Cassandra® are either registered trademarks or trademarks of
the Apache Software Foundation in the United States and/or other countries.
No endorsement by The Apache Software Foundation is implied by the use of these marks.
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/scylladb/gocqlx là nguồn chính thức.
scylladb/gocqlx có những chủ đề gì?
GitHub topics của scylladb/gocqlx: "cassandra", "cql", "gocql", "golang", "migration", "orm", "query-builder", "scylla". TopGit xếp repo vào nhóm Backend.
scylladb/gocqlx có phải mã nguồn mở không?
Có — scylladb/gocqlx phát hành theo license Apache-2.0, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/scylladb/gocqlx.
scylladb/gocqlx có website riêng không?
TopGit chưa ghi nhận URL trang chủ cho scylladb/gocqlx. Phần README ở tab phía trên thường có link demo, hoặc xem mô tả GitHub của repo.
scylladb/gocqlx còn đang phát triển không?
Commit gần nhất trên scylladb/gocqlx là 14 ngày trước (theo timestamp GitHub). Repo có 131 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
scylladb/gocqlx dùng license gì?
scylladb/gocqlx phát hành theo license Apache-2.0. Nên mở file LICENSE trên GitHub để xác nhận — license metadata đôi khi lệch với thực tế dự án.
Đọc đầy đủ README ở tab phía trên.
Vẫn đang phân vân về gocqlx?
Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về gocqlx.