Megosztás a következőn keresztül:


Rövid útmutató: Go-alkalmazás létrehozása az ügyféllel az gocql Apache Cassandra-adatokHoz készült Azure Cosmos DB kezeléséhez

A KÖVETKEZŐKRE VONATKOZIK: Cassandra

Az Azure Cosmos DB egy többmodelles adatbázis-szolgáltatás, amely lehetővé teszi dokumentum-, tábla-, kulcs-érték- és gráfadatbázisok gyors létrehozását és lekérdezését globális terjesztési és horizontális méretezési képességekkel. Ebben a rövid útmutatóban először egy Azure Cosmos DB for Apache Cassandra-fiókot fog létrehozni. Ezután futtat egy Go-alkalmazást egy Cassandra-kulcstér, tábla létrehozásához és néhány művelet végrehajtásához. Ez a Go-alkalmazás gocql-t használ, amely a Go nyelv Cassandra-ügyfele.

Előfeltételek

  • Egy Azure-fiók, aktív előfizetéssel. Hozzon létre egyet ingyen. Vagy ingyenesen kipróbálhatja az Azure Cosmos DB-t Azure-előfizetés nélkül.
  • A Go telepítve van a számítógépen, és ismeri a Go működését.
  • Git.

Adatbázisfiók létrehozása

Mielőtt létrehozhat egy adatbázist, létre kell hoznia egy Cassandra-fiókot az Azure Cosmos DB-vel.

  1. Az Azure Portal menüjében vagy a Kezdőlapon válassza az Erőforrás létrehozása elemet.

  2. Az Új lapon keresse meg és válassza ki az Azure Cosmos DB-t.

  3. Az Azure Cosmos DB lapon válassza a Létrehozás lehetőséget.

  4. Az API-lapon válassza a Létrehozás lehetőséget a Cassandra szakaszban.

    A létrehozni kívánt fiók típusát az API határozza meg. Az Azure Cosmos DB öt API-t biztosít: a NoSQL-t a dokumentum-adatbázisokhoz, a Gremlint a gráfadatbázisokhoz, a MongoDB-t a dokumentum-adatbázisokhoz, az Azure Tableet és a Cassandrát. Minden API-hoz külön fiókot kell létrehoznia.

    Válassza a Cassandra lehetőséget, mert ebben a rövid útmutatóban egy olyan táblát hoz létre, amely a Cassandra API-val működik.

    További információ a Cassandra API-ról.

  5. Az Azure Cosmos DB-fiók létrehozása lapon adja meg az új Azure Cosmos DB-fiók alapbeállításait.

    Beállítás Érték Leírás
    Előfizetés Az Ön előfizetése Válassza ki az Azure Cosmos DB-fiókhoz használni kívánt Azure-előfizetést.
    Erőforráscsoport Új létrehozása

    Ezután adja meg ugyanazt a nevet, mint a fiók neve
    Válassza az Új létrehozása lehetőséget. Ezután adjon meg egy új erőforráscsoportnevet a fiókjához. Az egyszerűség kedvéért használja ugyanazt a nevet, mint az Azure Cosmos DB-fiók neve.
    Fiók neve Adjon meg egy egyedi nevet Adjon meg egy egyedi nevet az Azure Cosmos DB-fiók azonosításához. A fiók URI-ja cassandra.cosmos.azure.com hozzá lesz fűzve az egyedi fiók nevéhez.

    A fióknév csak kisbetűket, számokat és kötőjeleket (-) használhat, és 3 és 31 karakter közötti hosszúságúnak kell lennie.
    Hely A felhasználókhoz legközelebb eső régió Válassza ki az Azure Cosmos DB-fiókot üzemeltetéséhez használni kívánt földrajzi helyet. Használja a felhasználókhoz legközelebb lévő helyet, hogy a lehető leggyorsabb hozzáférést biztosítsa az adatokhoz.
    Kapacitásmód Kiosztott átviteli sebesség vagy kiszolgáló nélküli A kiosztott átviteli sebesség kiválasztásával hozzon létre egy fiókot kiosztott átviteli módban. A Kiszolgáló nélküli lehetőséget választva kiszolgáló nélküli módban hozhat létre fiókot.
    Ingyenes Azure Cosmos DB-kedvezmény alkalmazása Alkalmazás vagy nem alkalmazható Az Ingyenes Azure Cosmos DB-csomaggal az első 1000 RU/s-t és 25 GB tárterületet kap ingyenesen egy fiókban. További információk az ingyenes szintről.
    A fiók teljes átviteli sebességének korlátozása Válassza ki a fiók átviteli sebességének korlátozásához Ez akkor hasznos, ha a fiók teljes átviteli sebességét egy adott értékre szeretné korlátozni.

    Feljegyzés

    Azure-előfizetésenként egy ingyenes szintű Azure Cosmos DB-fiókkal rendelkezhet, és a fiók létrehozásakor kell feliratkoznia. Ha nem látja az ingyenes szintű kedvezmény alkalmazására vonatkozó lehetőséget, az azt jelenti, hogy az előfizetés egy másik fiókján már engedélyezve van az ingyenes szint.

    Az Apache Cassandra-hoz készült Azure Cosmos DB új fióklapja

  6. A Globális terjesztés lapon konfigurálja az alábbi adatokat. A rövid útmutatóban az alapértelmezett értékeket meghagyhatja:

    Beállítás Érték Leírás
    Georedundancia Letiltás Engedélyezze vagy tiltsa le a globális terjesztést a fiókjában, ha párosítja a régiót egy párrégióval. Később további régiókat is hozzáadhat a fiókjához.
    Többrégiós írások Letiltás A többrégiós írási képesség lehetővé teszi, hogy kihasználja az adatbázisok és tárolók kiosztott átviteli sebességét világszerte.
    Rendelkezésre állási zónák Letiltás A rendelkezésre állási zónák egy Azure-régióban elkülönített helyek. Minden rendelkezésreállási zóna egy vagy több, független áramforrással, hűtéssel és hálózatkezelési megoldással ellátott adatközpontból áll.

    Feljegyzés

    A következő beállítások nem érhetők el, ha a Kiszolgáló nélküli lehetőséget választja kapacitás módként:

    • Ingyenes szintű kedvezmény alkalmazása
    • Georedundancia
    • Többrégiós írások
  7. Igény szerint további részleteket is konfigurálhat a következő lapokban:

    • Hálózatkezelés – Hozzáférés konfigurálása virtuális hálózatról.
    • Biztonsági mentési szabályzat – Konfigurálja az időszakos vagy folyamatos biztonsági mentési szabályzatot.
    • Titkosítás – Szolgáltatás által felügyelt vagy ügyfél által felügyelt kulcs használata.
    • Címkék – A címkék név-érték párok, amelyek lehetővé teszik az erőforrások kategorizálását és az összevont számlázás megtekintését úgy, hogy ugyanazt a címkét több erőforrásra és erőforráscsoportra alkalmazza.
  8. Válassza az Áttekintés + létrehozás lehetőséget.

  9. Ellenőrizze a fiók beállításait, majd válassza a Létrehozás lehetőséget. A fiók létrehozása néhány percet vesz igénybe. Várja meg, hogy a portálon megjelenjen Az üzembe helyezés befejeződött üzenet.

    Az Azure Portal Értesítések panelje

  10. Válassza az Ugrás az erőforrásra lehetőséget, és lépjen az Azure Cosmos DB-fiók oldalára.

A mintaalkalmazás klónozása

Először klónozza az alkalmazást a GitHubról.

  1. Nyisson meg egy parancssort, és hozzon létre egy új mappát.git-samples

    md "C:\git-samples"
    
  2. Nyisson meg egy git-terminálablakot, például a git basht. cd A parancs használatával váltson az új mappára, és telepítse a mintaalkalmazást.

    cd "C:\git-samples"
    
  3. Az alábbi parancs futtatásával klónozhatja a mintatárházat. Ez a parancs másolatot hoz létre a mintaalkalmazásról az Ön számítógépén.

    git clone https://github.com/Azure-Samples/azure-cosmos-db-cassandra-go-getting-started.git
    

A kód áttekintése

Ez a lépés nem kötelező. Ha szeretné megtudni, hogyan hozza létre a kód az adatbázis-erőforrásokat, tekintse át az alábbi kódrészleteket. Ellenkező esetben kihagyhatja az alkalmazás futtatását

A GetSession függvény (része utils\utils.go) egy olyan függvényt *gocql.Session ad vissza, amelyet fürtműveletek, például beszúrás, keresés stb. végrehajtására használnak.

func GetSession(cosmosCassandraContactPoint, cosmosCassandraPort, cosmosCassandraUser, cosmosCassandraPassword string) *gocql.Session {
    clusterConfig := gocql.NewCluster(cosmosCassandraContactPoint)
    port, err := strconv.Atoi(cosmosCassandraPort)
    
    clusterConfig.Authenticator = gocql.PasswordAuthenticator{Username: cosmosCassandraUser, Password: cosmosCassandraPassword}
    clusterConfig.Port = port
    clusterConfig.SslOpts = &gocql.SslOptions{Config: &tls.Config{MinVersion: tls.VersionTLS12}}
    clusterConfig.ProtoVersion = 4
    
    session, err := clusterConfig.CreateSession()
    ...
    return session
}

Az Azure Cosmos DB Cassandra-gazdagépet a rendszer átadja a gocql.NewCluster függvénynek, *gocql.ClusterConfig hogy megkapja a felhasználónevet, jelszót, portot és a megfelelő TLS-verzió használatára konfigurált szerkezetet (HTTPS/SSL/TLS titkosítási biztonsági követelmény)

A GetSession függvény ezután a main függvényből (main.go) lesz meghívva.

func main() {
    session := utils.GetSession(cosmosCassandraContactPoint, cosmosCassandraPort, cosmosCassandraUser, cosmosCassandraPassword)
    defer session.Close()
    ...
}

A kapcsolati adatok és a hitelesítő adatok környezeti változók formájában fogadhatók el (a init metódus feloldva)

func init() {
    cosmosCassandraContactPoint = os.Getenv("COSMOSDB_CASSANDRA_CONTACT_POINT")
    cosmosCassandraPort = os.Getenv("COSMOSDB_CASSANDRA_PORT")
    cosmosCassandraUser = os.Getenv("COSMOSDB_CASSANDRA_USER")
    cosmosCassandraPassword = os.Getenv("COSMOSDB_CASSANDRA_PASSWORD")

    if cosmosCassandraContactPoint == "" || cosmosCassandraUser == "" || cosmosCassandraPassword == "" {
        log.Fatal("missing mandatory environment variables")
    }
}

Ezután különböző műveletek végrehajtására szolgál (részben operations\setup.go) az Azure Cosmos DB-ben, kezdve a létrehozással és table a létrehozássalkeyspace.

Ahogy a név is sugallja, a DropKeySpaceIfExists függvény csak akkor veti el a függvényt keyspace , ha létezik.

const dropKeyspace = "DROP KEYSPACE IF EXISTS %s"

func DropKeySpaceIfExists(keyspace string, session *gocql.Session) {
    err := utils.ExecuteQuery(fmt.Sprintf(dropKeyspace, keyspace), session)
    if err != nil {
        log.Fatal("Failed to drop keyspace", err)
    }
    log.Println("Keyspace dropped")
}

CreateKeySpace függvény használatával hozza létre a keyspace (user_profile)

const createKeyspace = "CREATE KEYSPACE %s WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 }"

func CreateKeySpace(keyspace string, session *gocql.Session) {
    err := utils.ExecuteQuery(fmt.Sprintf(createKeyspace, keyspace), session)
    if err != nil {
        log.Fatal("Failed to create keyspace", err)
    }
    log.Println("Keyspace created")
}

Ezt követi a táblalétrehozás (user), amely a függvényt felügyeli CreateUserTable

const createTable = "CREATE TABLE %s.%s (user_id int PRIMARY KEY, user_name text, user_bcity text)"

func CreateUserTable(keyspace, table string, session *gocql.Session) {
    err := session.Query(fmt.Sprintf(createTable, keyspace, table)).Exec()
    if err != nil {
        log.Fatal("failed to create table ", err)
    }
    log.Println("Table created")
}

A kulcstér és a tábla létrehozása után CRUD-műveleteket hívunk meg (a művelet része operations\crud.go).

InsertUser a egy User. A felhasználói adatokat (azonosítót, nevet és várost) a lekérdezés argumentumaként állítja be a Bind

const createQuery = "INSERT INTO %s.%s (user_id, user_name , user_bcity) VALUES (?,?,?)"

func InsertUser(keyspace, table string, session *gocql.Session, user model.User) {
    err := session.Query(fmt.Sprintf(createQuery, keyspace, table)).Bind(user.ID, user.Name, user.City).Exec()
    if err != nil {
        log.Fatal("Failed to create user", err)
    }
    log.Println("User created")
}

FindUser egy adott felhasználói azonosítót használó felhasználó kereséséremodel\user.go szolgál, miközben Scan a (Cassandra által visszaadott) felhasználói attribútumokat egyes változókhoz (userid, name, city) köti. Ez csak az egyik módszer, amellyel a keresési lekérdezés eredményeként kapott eredményt használhatja

const selectQuery = "SELECT * FROM %s.%s where user_id = ?"

func FindUser(keyspace, table string, id int, session *gocql.Session) model.User {
    var userid int
    var name, city string
    err := session.Query(fmt.Sprintf(selectQuery, keyspace, table)).Bind(id).Scan(&userid, &name, &city)

    if err != nil {
        if err == gocql.ErrNotFound {
            log.Printf("User with id %v does not exist\n", id)
        } else {
            log.Printf("Failed to find user with id %v - %v\n", id, err)
        }
    }
    return model.User{ID: userid, Name: name, City: city}
}

FindAllUsers az összes felhasználó lekérésére szolgál. SliceMap a rendszer rövidítésként használja a felhasználó összes információjának lekéréséhez s szelet mapformájában. Tekintsünk mindegyikre map kulcs-érték párként, user_idahol az oszlop neve (például ) a kulcs és a hozzá tartozó érték.

const findAllUsersQuery = "SELECT * FROM %s.%s"

func FindAllUsers(keyspace, table string, session *gocql.Session) []model.User {
    var users []model.User
    results, _ := session.Query(fmt.Sprintf(findAllUsersQuery, keyspace, table)).Iter().SliceMap()

    for _, u := range results {
        users = append(users, mapToUser(u))
    }
    return users
}

A rendszer minden map felhasználói információt átalakít egy User olyan függvénysé mapToUser , amely egyszerűen kinyeri az értéket a megfelelő oszlopból, és a szerkezet egy példányának User létrehozásához használja.

func mapToUser(m map[string]interface{}) model.User {
    id, _ := m["user_id"].(int)
    name, _ := m["user_name"].(string)
    city, _ := m["user_bcity"].(string)

    return model.User{ID: id, Name: name, City: city}
}

Az alkalmazás futtatása

Ahogy korábban említettük, az alkalmazás a környezeti változók formájában fogadja el a kapcsolatot és a hitelesítő adatokat.

  1. Az Azure Portal Azure Cosmos DB-fiókjában válassza a Kapcsolati sztring lehetőséget.

    Részletek megtekintése és másolása a Kapcsolati sztring oldalról az Azure Portalon

Másolja ki a következő attribútumok (CONTACT POINTés ) értékeit, PORTUSERNAME és PRIMARY PASSWORDállítsa be őket a megfelelő környezeti változókra

set COSMOSDB_CASSANDRA_CONTACT_POINT=<value for "CONTACT POINT">
set COSMOSDB_CASSANDRA_PORT=<value for "PORT">
set COSMOSDB_CASSANDRA_USER=<value for "USERNAME">
set COSMOSDB_CASSANDRA_PASSWORD=<value for "PRIMARY PASSWORD">

A terminálablakban váltson a megfelelő mappára. Példa:

cd "C:\git-samples\azure-cosmosdb-cassandra-go-getting-started"
  1. A terminálban futtassa az alábbi parancsot az alkalmazás elindításához.
go run main.go
  1. A terminálablak értesítéseket jelenít meg a különböző műveletekről, beleértve a kulcsteret és a táblabeállítást, a felhasználók létrehozását stb.

  2. Ha megnyitja az Adatkezelőt az Azure Portalon, lekérdezheti és módosíthatja és használhatja az új adatokat.

    Az adatok megtekintése az Adatkezelőben – Azure Cosmos DB

Tekintse át az SLA-kat az Azure Portalon

Az Azure Portal figyeli az Azure Cosmos DB-fiók átviteli sebességét, tárhelyét, rendelkezésre állását, késését és konzisztenciáját. Az Azure Cosmos DB szolgáltatásiszint-szerződéshez (SLA) társított metrikák diagramjai az SLA értékét jelenítik meg a tényleges teljesítményhez képest. Ez a metrikákból álló csomag átláthatóvá teszi az SLA-k monitorozását.

Metrikák és SLA-k áttekintése:

  1. Válassza a Metrikákat az Azure Cosmos DB-fiók navigációs menüjében.

  2. Válasszon egy lapot, például a Késés lapot, és válasszon egy időkeretet a jobb oldalon. Hasonlítsa össze a diagramok Tényleges és SLA sorait.

    Azure Cosmos DB-metrikák

  3. Tekintse át a metrikákat a többi lapon.

Az erőforrások eltávolítása

Ha végzett az alkalmazással és az Azure Cosmos DB-fiókkal, törölheti a létrehozott Azure-erőforrásokat, hogy ne járjon további költségekkel. Az erőforrások törlése:

  1. Az Azure Portal keresősávján keresse meg és válassza ki az erőforráscsoportokat.

  2. A listából válassza ki a rövid útmutatóhoz létrehozott erőforráscsoportot.

    Válassza ki a törölni kívánt erőforráscsoportot

  3. Az erőforráscsoport Áttekintés lapján válassza az Erőforráscsoport törlése lehetőséget.

    Az erőforráscsoport törlése

  4. A következő ablakban adja meg a törölni kívánt erőforráscsoport nevét, majd válassza a Törlés lehetőséget.

Következő lépések

Ebben a rövid útmutatóban megtanulta, hogyan hozhat létre Azure Cosmos DB-fiókot a Cassandra API-val, és hogyan futtathat egy Go-alkalmazást, amely létrehoz egy Cassandra-adatbázist és -tárolót. Mostantól további adatokat importálhat az Azure Cosmos DB-fiókjába.