Rumah  >  Artikel  >  pangkalan data  >  Gunakan MySQL dalam bahasa Go untuk mengurus data sistem yang diedarkan

Gunakan MySQL dalam bahasa Go untuk mengurus data sistem yang diedarkan

WBOY
WBOYasal
2023-06-17 08:52:041013semak imbas

Dengan perkembangan Internet, sistem yang diedarkan telah menarik lebih banyak perhatian. Faedah sistem teragih ialah pengembangan yang mudah dan toleransi kesalahan yang baik, tetapi ia juga membawa masalah pengurusan data. Dalam sistem teragih, berbilang nod membaca dan menulis data yang sama pada masa yang sama, dan ketidakkonsistenan data adalah masalah biasa. Akibatnya, pengurusan data menjadi lebih kompleks. Artikel ini akan memperkenalkan cara menggunakan MySQL dalam bahasa Go untuk mengurus data sistem yang diedarkan.

Bahasa Go menyediakan sokongan yang baik untuk sistem yang diedarkan Ia juga menyediakan pakej pangkalan data/SQL yang boleh digunakan untuk mengendalikan pangkalan data dengan mudah. MySQL ialah pangkalan data hubungan yang sangat biasa digunakan yang menyediakan banyak ciri lanjutan, seperti transaksi, replikasi, topologi, pengelompokan, dll. Di bawah ini kami akan memperkenalkan cara menggunakan MySQL untuk mengurus data sistem yang diedarkan.

Langkah pertama: Pasang MySQL

Mula-mula anda perlu memasang MySQL, yang boleh dimuat turun dan dipasang di tapak web rasmi. Selain itu, anda juga boleh menggunakan beberapa pengedaran MySQL sumber terbuka, seperti MariaDB. Semasa proses pemasangan, anda perlu memberi perhatian kepada mengkonfigurasi parameter berkaitan seperti kata laluan dan port. Secara amnya, pengguna lalai adalah akar dan kata laluan kosong.

Langkah 2: Bahasa Go untuk menyambung ke MySQL

Dalam bahasa Go, gunakan pakej pangkalan data/sql dan pemacu mysql untuk menyambung ke pangkalan data MySQL. Dalam pernyataan import, gunakan pakej pemacu pangkalan data/sql dan mysql:

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)

Dalam fungsi utama, kita boleh menggunakan kod berikut untuk menyambung ke MySQL:

db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/testdb")
if err != nil {
    log.Fatal(err)
}
defer db.Close()

err = db.Ping()
if err != nil {
    log.Fatal(err)
}

Antaranya, nama pengguna dan kata laluan ditetapkan oleh kami Nama pengguna dan kata laluan MySQL yang ditentukan, tcp (127.0.0.1:3306) menunjukkan perkhidmatan MySQL yang disambungkan ke hos tempatan, dan testbd ialah nama pangkalan data yang akan disambungkan.

Langkah 3: Buat jadual data

Dalam MySQL, anda boleh menggunakan pernyataan SQL berikut untuk mencipta jadual:

CREATE TABLE `books` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `author` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` varchar(1024) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Dalam contoh ini, kami mencipta jadual bernama buku Jadual mempunyai empat bidang. id ialah kunci utama, tajuk, pengarang dan huraian ialah tajuk, pengarang dan penerangan buku.

Langkah 4: Tambah, padam, ubah suai dan pertanyaan data

Dalam bahasa Go, anda boleh menggunakan pernyataan SQL untuk mengendalikan pangkalan data MySQL. Berikut ialah contoh penggunaan bahasa Go untuk menambah, memadam, mengubah suai dan membuat pertanyaan data:

// insert
stmt, err := db.Prepare("INSERT INTO books(title, author, description) VALUES (?, ?, ?)")
if err != nil {
    log.Fatal(err)
}
res, err := stmt.Exec("Go语言编程", "张三", "Go语言的基础知识")
if err != nil {
    log.Fatal(err)
}

// retrieve
rows, err := db.Query("SELECT id, title, author, description FROM books")
if err != nil {
    log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
    var id int
    var title string
    var author string
    var description string
    err = rows.Scan(&id, &title, &author, &description)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(id, title, author, description)
}
err = rows.Err()
if err != nil {
    log.Fatal(err)
}

// update
stmt, err = db.Prepare("UPDATE books SET title=? WHERE id=?")
if err != nil {
    log.Fatal(err)
}
res, err = stmt.Exec("Go语言从入门到精通", 1)
if err != nil {
    log.Fatal(err)
}

// delete
stmt, err = db.Prepare("DELETE FROM books WHERE id=?")
if err != nil {
    log.Fatal(err)
}
res, err = stmt.Exec(1)
if err != nil {
    log.Fatal(err)
}

Di sini, kami menggunakan fungsi Sediakan dan Exec untuk melaksanakan operasi sisipan, pertanyaan, kemas kini dan padam. Malah, operasi ini boleh digabungkan menggunakan transaksi untuk memastikan konsistensi data. Dalam bahasa Go, urus niaga boleh digunakan dengan cara berikut:

tx, err := db.Begin()
if err != nil {
    log.Fatal(err)
}

stmt, err := tx.Prepare("INSERT INTO books(title, author, description) VALUES (?, ?, ?)")
if err != nil {
    tx.Rollback()
    log.Fatal(err)
}
defer stmt.Close()

res, err := stmt.Exec("Go语言编程", "张三", "Go语言的基础知识")
if err != nil {
    tx.Rollback()
    log.Fatal(err)
}

stmt, err = tx.Prepare("UPDATE books SET title=? WHERE id=?")
if err != nil {
    tx.Rollback()
    log.Fatal(err)
}
res, err = stmt.Exec("Go语言从入门到精通", 1)
if err != nil {
    tx.Rollback()
    log.Fatal(err)
}

err = tx.Commit()
if err != nil {
    tx.Rollback()
    log.Fatal(err)
}

Dalam contoh di atas, kami mula-mula membuka transaksi, kemudian melakukan operasi sisipan dan kemas kini dalam transaksi, dan akhirnya melakukan transaksi. Jika ralat berlaku, transaksi boleh ditarik balik.

Ringkasan

Dalam artikel ini, kami memperkenalkan cara menggunakan MySQL dalam bahasa Go untuk mengurus data sistem yang diedarkan. Melalui pengendalian bahasa Go dan MySQL, kami boleh menambah, membuat pertanyaan, mengemas kini dan memadam data dengan mudah, dan pada masa yang sama, kami juga boleh menggunakan transaksi untuk memastikan konsistensi data. Apabila menggunakan MySQL, anda perlu memberi perhatian kepada parameter konfigurasi, seperti nama pengguna, kata laluan, port, dll. Di samping itu, anda juga perlu memberi perhatian kepada masalah yang disebabkan oleh operasi serentak, seperti kunci.

Atas ialah kandungan terperinci Gunakan MySQL dalam bahasa Go untuk mengurus data sistem yang diedarkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn