Apache Cassandra ialah pangkalan data bukan perhubungan (NoSQL) yang digunakan secara meluas dalam senario storan data teragih berskala besar, berkemampuan tinggi dan bertolak ansur terhadap kesalahan. Ia menggunakan model data yang serupa dengan Bigtable Google dan menggabungkannya dengan seni bina teragih Amazon Dynamo. Dalam artikel ini, kita akan membincangkan cara menggunakan Apache Cassandra dalam bahasa Go dan cara menggunakannya untuk membina aplikasi web yang mudah.
Model data Cassandra
Model data Cassandra boleh dilihat secara logik sebagai jadual cincang yang diedarkan sepenuhnya. Jadual terdiri daripada berbilang keluarga lajur Setiap keluarga lajur mengandungi ruang kekunci (Keyspace), yang mengandungi berbilang jadual (Jadual Setiap jadual mengandungi banyak baris (Baris), dan dalam setiap baris, ia boleh Menyimpan berbilang data bernama lajur (Lajur). .
Dalam Cassandra, anda boleh menggunakan CQL (Cassandra Query Language) untuk membuat pertanyaan dan memanipulasi data. CQL mudah dipelajari dan digunakan kerana ia menggunakan sintaks yang serupa dengan bahasa SQL, tetapi beberapa butiran sintaks masih berbeza.
Langkah-langkah untuk menggunakan Apache Cassandra
Sekarang, mari kita lihat cara menggunakan Apache Cassandra dalam aplikasi Go anda. Terdapat 5 langkah di bawah.
1. Pasang Cassandra
Perkara pertama yang perlu dilakukan ialah memasang Cassandra. Anda boleh pergi ke laman web rasmi Cassandra untuk memuat turun fail binari yang sepadan dan memasangnya mengikut arahan.
2. Buat keluarga lajur
Selepas anda memasang Cassandra, langkah seterusnya ialah mencipta keluarga lajur dan menambah beberapa lajur pada keluarga lajur. Anda boleh menggunakan cqlsh (Cassandra shell) untuk mengendalikan Cassandra.
Di sini, kami mencipta keluarga lajur bernama "pelajar", yang mengandungi nama pelajar, nombor pelajar, kelas dan maklumat lain:
CREATE KEYSPACE learning WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '3'} AND durable_writes = true; CREATE TABLE learning.students ( student_id text PRIMARY KEY, first_name text, last_name text, department text );
3 Sambung ke Cassandra
Dalam Bahasa Go, anda boleh menggunakan perpustakaan pihak ketiga untuk menyambung ke Cassandra. Di sini, kami menggunakan gocql untuk menyambung.
Berikut ialah contoh kod untuk menyambung ke gugusan Cassandra:
cluster := gocql.NewCluster("127.0.0.1") cluster.Keyspace = "learning" session, err := cluster.CreateSession() if err != nil { log.Fatal(err) } defer session.Close()
Di sini, anda hanya tentukan alamat IP atau nama hos bagi gugusan Cassandra dan tentukan ruang kekunci untuk disambungkan.
4. Tulis pernyataan pertanyaan
Dalam bahasa Go, anda boleh menggunakan gocql.Query untuk menulis pernyataan pertanyaan. Berikut ialah contoh kod untuk menanyakan semua maklumat pelajar dalam jadual:
var students []model.Student query := "SELECT * FROM students" iter := session.Query(query).Iter() for iter.Scan(&student.ID, &student.FirstName, &student.LastName, &student.Department) { students = append(students, student) } if err := iter.Close(); err != nil { log.Fatal(err) } for _, student := range students { fmt.Println(student.ID, student.FirstName, student.LastName, student.Department) }
Di sini, kami mula-mula mengisytiharkan model.Struktur pelajar untuk menyimpan data pelajar yang diambil daripada jadual. Kemudian, kami menulis pernyataan pertanyaan SELECT dan mencipta objek pertanyaan menggunakan kaedah session.Query. Seterusnya, kami mengulangi hasil pertanyaan dan menyimpan data ke dalam kepingan, dan akhirnya mengeluarkan maklumat untuk semua pelajar.
5. Tutup sambungan
Akhir sekali, kita perlu menutup sambungan kepada Cassandra. Berikut ialah contoh kod untuk menutup sambungan Cassandra:
defer session.Close()
Membina aplikasi web menggunakan Cassandra
Sekarang, mari kita lihat cara membina aplikasi web mudah menggunakan Apache Cassandra dalam bahasa Go. Dalam aplikasi web ini, kami akan membuat halaman senarai pelajar, memaparkan maklumat semua pelajar, dan menyediakan borang untuk menambah maklumat pelajar.
Di sini kami menggunakan rangka kerja Gin untuk membina aplikasi web. Berikut ialah contoh kod untuk membina aplikasi web:
package main import ( "html/template" "log" "net/http" "strconv" "github.com/gin-gonic/gin" "github.com/gocql/gocql" ) type Student struct { ID string FirstName string LastName string Department string } var session *gocql.Session func init() { cluster := gocql.NewCluster("127.0.0.1") cluster.Keyspace = "learning" var err error session, err = cluster.CreateSession() if err != nil { log.Fatal(err) } } func main() { router := gin.Default() router.LoadHTMLGlob("templates/*") router.GET("/", func(c *gin.Context) { var students []Student query := "SELECT * FROM students" iter := session.Query(query).Iter() for { var student Student if !iter.Scan(&student.ID, &student.FirstName, &student.LastName, &student.Department) { break } students = append(students, student) } if err := iter.Close(); err != nil { log.Fatal(err) } c.HTML(http.StatusOK, "index.tmpl", gin.H{ "students": students, }) }) router.POST("/add", func(c *gin.Context) { student := Student{ ID: c.PostForm("id"), FirstName: c.PostForm("first_name"), LastName: c.PostForm("last_name"), Department: c.PostForm("department"), } query := "INSERT INTO students (student_id, first_name, last_name, department) VALUES (?, ?, ?, ?)" err := session.Query(query, student.ID, student.FirstName, student.LastName, student.Department).Exec() if err != nil { log.Fatal(err) } c.Redirect(http.StatusFound, "/") }) router.Run(":8080") }
Di sini, kami mula-mula mengisytiharkan struktur bernama Pelajar, yang digunakan untuk mewakili maklumat pelajar. Kemudian, kami menyambung ke gugusan Cassandra dalam fungsi init.
Dalam fungsi utama, kami menggunakan penghalaan Gin untuk mengendalikan permintaan HTTP yang berbeza. Pada laluan "/", kami mula-mula menanyakan maklumat semua pelajar dan menghantarnya ke templat index.tmpl untuk memaparkan halaman senarai pelajar. Pada laluan "/add", kami memasukkan rekod pelajar baharu berdasarkan data borang yang diserahkan oleh pengguna, dan kemudian mengubah hala pengguna kembali ke halaman senarai pelajar.
Akhir sekali, kami memanggil router.Run() untuk memulakan aplikasi web.
Ringkasan
Dalam artikel ini, kami membincangkan cara menggunakan Apache Cassandra dalam bahasa Go dan membina aplikasi web yang mudah. Melalui contoh ini, kita dapat melihat penggunaan mudah Cassandra dan cara menggunakan perpustakaan pihak ketiga untuk mengendalikan Cassandra dalam bahasa Go. Jika anda sedang mencari pangkalan data teragih yang tinggi dan ketersediaan tinggi, maka Apache Cassandra mungkin menjadi pilihan untuk anda.
Atas ialah kandungan terperinci Menggunakan Apache Cassandra dalam Go: Panduan Lengkap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!