インターネットの急速な発展に伴い、非リレーショナル データベース (NoSQL) がますます広く使用されるようになりました。Go 言語には、データを処理する非リレーショナルな方法もいくつかあります。ただし、MySQL などの一部の従来のリレーショナル データベースでは、いくつかの手法を使用して非リレーショナル データ処理関数を実装することもできます。
この記事では、MySQL を使用して Go 言語で非リレーショナル データ処理を実装する方法とテクニック (非リレーショナル テーブルの作成および設計方法を含む) を紹介し、例を通じてデータの読み取り方法を示します。書いて更新します。このプロセスでは、github.com/go-sql-driver/mysql ライブラリのいずれかを使用します。
1. 非リレーショナル テーブルの作成
MySQL データベースの場合、通常はリレーショナル データベースとして考えるため、テーブルを設計し、テーブル間の関係を維持する必要があります。ただし、場合によっては、JSON 形式のデータなど、非リレーショナル構造でデータを保存する必要があります。
MySQL では、JSON タイプのフィールドを使用して非リレーショナル ストレージを実装できます。たとえば、ユーザー情報を保存するテーブルを作成します。このテーブルには、ユーザーの個人情報を保存するための JSON タイプ フィールド「info」が含まれています。
CREATE TABLE users ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, info JSON NOT NULL, PRIMARY KEY (id) );
上記のコードでは、「users 」テーブルという名前のテーブルを作成しました。これには、id、name、info の 3 つのフィールドが含まれます。情報フィールドのタイプは JSON で、ユーザーの個人情報を保存するために使用されます。実際のアプリケーションでは、BLOB、TEXT などの他の非リレーショナル型も使用できます。
2. Go 言語を使用して MySQL データベースに接続する
Go 言語で MySQL データベースに接続するには、サードパーティのライブラリを使用する必要があります (最も一般的に使用されているのは github.com/) go-sql-driver/mysql。まず、このライブラリをインストールする必要があります。このライブラリは、次のコマンドでインストールできます。
go get github.com/go-sql-driver/mysql
このライブラリは、データベースの接続と操作に使用できる sql.DB タイプを提供します。データベースに接続する前に、次のような構成情報を提供する必要があります。
dsn := "root:password@(127.0.0.1:3306)/database_name?charset=utf8mb4&parseTime=True&loc=Local" db, err := sql.Open("mysql", dsn) if err != nil { panic(err) } defer db.Close()
dsn は、データベースへの接続に使用されるデータ ソース名です。これには、ユーザー名、パスワード、ホストアドレス、ポート番号、データベース名、エンコード方式、その他の情報が含まれます。上記のコードでは、ローカル ホスト アドレスとデフォルトの 3306 ポート番号を使用し、ユーザー名とパスワードを対応する値に置き換えました。接続が成功すると、db 変数には接続した MySQL データベースへの参照が含まれます。
3. 非リレーショナル データを読み書きするための Go 言語
MySQL データベースに接続した後、sql.DB タイプを使用して SQL クエリを実行し、関連データを取得できます。非リレーショナル データの場合、MySQL の JSON 関数を使用して、JSON タイプのフィールドの読み取りと書き込みを行うことができます。
次のコードは、新しいユーザー情報を users テーブルに書き込む方法を示しています。
info := `{ "age": 23, "gender": "male", "email": "john@example.com" }` result, err := db.Exec("INSERT INTO users(name, info) VALUES(?, ?)", "John", info) if err != nil { panic(err) } fmt.Printf("New user id: %d ", result.LastInsertId())
この例では、まず、ユーザー情報を含む JSON 文字列を定義します。次に、Exec 関数を使用して挿入ステートメントを実行し、ユーザー情報をパラメーターとして SQL ステートメントに渡します。挿入が成功すると、新しいユーザーの ID を取得して出力します。
次に、非リレーショナル フィールドに格納されている JSON データを読み取る方法を説明します。 MySQL の JSON_EXTRACT 関数を使用すると、JSON のキーと値のペアを簡単に取得できます。次のコードは、users テーブル内のすべてのユーザー情報を読み取る方法を示しています。
rows, err := db.Query("SELECT * FROM users") if err != nil { panic(err) } defer rows.Close() for rows.Next() { var id int var name string var info []byte err := rows.Scan(&id, &name, &info) if err != nil { panic(err) } var user map[string]interface{} err = json.Unmarshal(info, &user) if err != nil { panic(err) } fmt.Printf("ID: %d, Name: %s, Age: %f, Gender: %s, Email: %s ", id, name, user["age"], user["gender"], user["email"]) }
この例では、最初に db.Query 関数を使用して、users テーブル内のすべてのデータをクエリします。次に、 rows.Scan 関数を使用して、データの各行の ID、名前、および情報フィールドを読み取ります。次に、情報フィールドの値をタイプ map[string]interface{} のユーザー変数に変換し、解析に json.Unmarshal 関数を使用します。最後に、各ユーザーの ID、名前、年齢、性別、メールアドレスを出力します。
最後に、非リレーショナル フィールドに格納されているデータを更新する方法を示します。 MySQL の JSON_SET 関数を使用すると、JSON フィールドのキーと値のペアを動的に更新できます。次のコードは、ユーザーの電子メール アドレスを新しい値に更新する方法を示しています。
result, err := db.Exec("UPDATE users SET info=JSON_SET(info, '$.email', ?) WHERE name=?", "john_doe@example.com", "John") if err != nil { panic(err) } rowsAffected, err := result.RowsAffected() if err != nil { panic(err) } fmt.Printf("Rows affected: %d ", rowsAffected)
この例では、Exec 関数を使用して更新ステートメントを実行し、新しい電子メール アドレスをパラメーターとして SQL ステートメントに渡します。 JSON_SET 関数。 WHERE 句を使用して、更新するユーザーの名前を指定します。更新が成功したら、影響を受ける行数を確認して出力します。
4. 概要
Go 言語では、MySQL データベースを使用して非リレーショナル データを保存できます。 JSON タイプのフィールドを使用すると、JSON 形式でデータを簡単に保存および処理できます。この記事では、非リレーショナル テーブルの作成、MySQL データベースへの接続、非リレーショナル データの読み取りと書き込みの方法とテクニック、およびデータ操作のための JSON_EXTRACT 関数と JSON_SET 関数の使用例を紹介します。これらは、MySQL をより効果的に使用して、実際のアプリケーションで非リレーショナル データを処理するのに役立ちます。
以上がGo 言語で MySQL を使用して非リレーショナル データ処理を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。