Azure Cosmos DB öykünücüsü kullanarak yerel olarak geliştirme
Makale
Öykünücü için yaygın bir kullanım örneği, uygulamalarınızı oluştururken geliştirme veritabanı olarak hizmet vermektir. Geliştirme için öykünücüyü kullanmak, azure cosmos DB gibi bir veritabanı için herhangi bir hizmet maliyeti ödemeden veri oluşturma ve modelleme özelliklerini öğrenmenize yardımcı olabilir. Ayrıca, öykünücüyü bir otomasyon iş akışının parçası olarak kullanmak, aynı tümleştirme testleri paketini çalıştırabilmenizi sağlayabilir. Aynı testlerin hem geliştirme makinenizde yerel olarak hem de sürekli tümleştirme işinde uzaktan çalıştığından emin olabilirsiniz.
Başlamak için Microsoft Container Registry'den (MCR) kapsayıcı görüntüsünün Linux değişkenini alın.
Kapsayıcı kayıt defterinden mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulatormongodb yerel Docker konağına etiketini kullanarak Linux kapsayıcı görüntüsünü çekin.
Öykünücünün yürütülebilir dosyasını (Microsoft.Azure.Cosmos.Emulator.exe) %ProgramFiles%\Azure Cosmos DB Emulator yolda başlatın. Öykünücüyü yapılandırmak için şu parametreleri kullanın:
Açıklama
EnableCassandraEndpoint
Apache Cassandra uç noktası için API'ye olanak tanır.
CassandraPort
Uç nokta için kullanılacak bağlantı noktası numarası.
Öykünücünün yürütülebilir dosyasını (Microsoft.Azure.Cosmos.Emulator.exe) %ProgramFiles%\Azure Cosmos DB Emulator yolda başlatın. Öykünücüyü yapılandırmak için şu parametreleri kullanın:
Açıklama
EnableGremlinEndpoint
Apache Gremlin uç noktası için API'yi etkinleştirir.
GremlinPort
Uç nokta için kullanılacak bağlantı noktası numarası.
Öykünücünün yürütülebilir dosyasını (Microsoft.Azure.Cosmos.Emulator.exe) %ProgramFiles%\Azure Cosmos DB Emulator yolda başlatın. Öykünücüyü yapılandırmak için şu parametreleri kullanın:
Açıklama
EnableTableEndpoint
Tablo uç noktası için API'sini etkinleştirir.
TablePort
Uç nokta için kullanılacak bağlantı noktası numarası.
Veri gezginine https://localhost:8081/_explorer/index.html erişmek için adresine gidin.
Windows Başlat menüsü uygulamayı seçerek öykünücüyü başlatın.
Alternatif olarak, öykünücünün yürütülebilir dosyasını (Microsoft.Azure.Cosmos.Emulator.exe) %ProgramFiles%\Azure Cosmos DB Emulator yolda başlatabilirsiniz.
Ayrıca, öykünücüyü komut satırından başlatabilirsiniz. Öykünücüyü yapılandırmak için şu parametreleri kullanın:
Açıklama
Port
NoSQL uç noktası api'sinde kullanılacak bağlantı noktası numarası.
Öykünücünün yürütülebilir dosyasını (Microsoft.Azure.Cosmos.Emulator.exe) %ProgramFiles%\Azure Cosmos DB Emulator yolda başlatın. Öykünücüyü yapılandırmak için şu parametreleri kullanın:
Açıklama
EnableMongoDbEndpoint
Belirtilen MongoDB sürümünde MongoDB uç noktası için API'sini etkinleştirir.
MongoPort
Uç nokta için kullanılacak bağlantı noktası numarası.
Öykünücü tarafından desteklenen komut satırı bağımsız değişkenleri ve MongoDB sürümleri hakkında daha fazla bilgi için bkz . komut satırı parametreleri.
Öykünücü, URL'sini https://localhost:8081/_explorer/index.htmlkullanarak veri gezginini otomatik olarak açar.
Öykünücünün TLS/SSL sertifikasını içeri aktarma
Öykünücüyü istemcide TLS/SSL'yi devre dışı bırakmadan tercih ettiğiniz geliştirici SDK'sıyla kullanmak için öykünücünün TLS/SSL sertifikasını içeri aktarın.
Öykünücü sertifikası, çalışan kapsayıcının yolunda _explorer/emulator.pem kullanılabilir. Sertifikayı çalışan kapsayıcıdan yerel makinenize indirmek için kullanın curl .
Bu değerleri daha önce değiştirdiyseniz konak (veya IP adresi) ve bağlantı noktası numarasını değiştirmeniz gerekebilir.
Sertifikayı genellikle işletim sisteminiz için kullanılan işleme göre yükleyin. Örneğin, Linux'ta sertifikayı /usr/local/share/ca-certificates/ yola kopyalarsınız.
Linux sistemleri için, Linux dağıtımınız için uygun komutu kullanarak sertifika paketini yeniden üretin.
Debian tabanlı Linux sistemleri (örneğin, Ubuntu) için şunu kullanın:
sudo update-ca-certificates
Red Hat tabanlı Linux sistemleri (örneğin, CentOS, Fedora) için şunu kullanın:
sudo update-ca-trust
Daha ayrıntılı yönergeler için işletim sisteminize özgü belgelere bakın.
Öykünücü sertifikası, çalışan kapsayıcıdaki klasörde C:\CosmosDB.Emulator\bind-mount kullanılabilir. Klasör ayrıca sertifikayı otomatik olarak yüklemek için bir betik içerir.
Klasörün tamamını yerel makinenize kopyalamak için kullanın docker cp .
Öykünücünün Windows yerel yüklemesi TLS/SSL sertifikalarını otomatik olarak içeri aktarır. Başka eyleme gerek yoktur.
SDK'dan öykünücüye bağlanma
Her SDK genellikle SDK'yı Azure Cosmos DB hesabınıza bağlamak için kullanılan bir istemci sınıfı içerir. Öykünücünün kimlik bilgilerini kullanarak SDK'yı öykünücü örneğine bağlayabilirsiniz.
kullanarak UpsertItemAsynckapsayıcıda yeni bir öğe oluşturun.
var item = new
{
id = "68719518371",
name = "Kiama classic surfboard"
};
await container.UpsertItemAsync(item);
.NET uygulamasını çalıştırın.
dotnet run
Uyarı
SSL hatası alırsanız, uygulamanız için TLS/SSL'yi devre dışı bırakmanız gerekebilir. Bu durum genellikle bir kapsayıcıda Azure Cosmos DB öykünücüsü kullanarak yerel makinenizde geliştirme yaptığınız ve kapsayıcının SSL sertifikasını içeri aktarmadığınız durumlarda ortaya çıkar. Bu sorunu çözmek için istemciyi oluşturmadan önce TLS/SSL doğrulamasını devre dışı bırakmak için istemcinin seçeneklerini yapılandırın:
SSL hatası alırsanız, uygulamanız için TLS/SSL'yi devre dışı bırakmanız gerekebilir. Bu durum genellikle bir kapsayıcıda Azure Cosmos DB öykünücüsü kullanarak yerel makinenizde geliştirme yaptığınız ve kapsayıcının SSL sertifikasını içeri aktarmadığınız durumlarda ortaya çıkar. Bu sorunu çözmek için, istemciyi oluşturmadan önce uygulamayı TLS/SSL doğrulamasını devre dışı bırakacak şekilde yapılandırın:
import urllib3
urllib3.disable_warnings()
Hala SSL hatalarıyla karşılaşıyorsanız Python sertifikaları farklı bir sertifika deposundan alır. Python'ın sertifikaları aradığı yolu belirlemek için şu adımları izleyin:
Önemli
Python sanal ortamı (venv) kullanıyorsanız komutları çalıştırmadan önce etkinleştirildiğindenemin olun!
Terminal açma
Python sürümünüze bağlı olarak python veya python3 yazarak Python yorumlayıcısını başlatın.
Python yorumlayıcısında aşağıdaki komutları çalıştırın:
from requests.utils import DEFAULT_CA_BUNDLE_PATH
print(DEFAULT_CA_BUNDLE_PATH)
Sanal bir ortamda yol şu olabilir (en azından Ubuntu'da):
Sanal ortamın dışında yol olabilir (en azından Ubuntu'da):
/etc/ssl/certs/ca-certificates.crt
DEFAULT_CA_BUNDLE_PATH tanımladıktan sonra yeni bir terminal açın ve öykünücü sertifikasını sertifika paketine eklemek için aşağıdaki komutları çalıştırın:
Önemli
DEFAULT_CA_BUNDLE_PATH değişken bir sistem dizinine işaret ederse, "İzin reddedildi" hatasıyla karşılaşabilirsiniz. Bu durumda, komutları yükseltilmiş ayrıcalıklarla (kök olarak) çalıştırmanız gerekir. Ayrıca, sağlanan komutları yürütürken sertifika paketini güncelleştirmeniz ve yeniden oluşturmanız gerekir.
# Add a new line to the certificate bundle
echo >> /path/to/ca_bundle
# Append the emulator certificate to the certificate bundle
cat /path/to/emulatorcert.crt >> /path/to/ca_bundle
SSL hatası alırsanız, uygulamanız için TLS/SSL'yi devre dışı bırakmanız gerekebilir. Bu durum genellikle bir kapsayıcıda Azure Cosmos DB öykünücüsü kullanarak yerel makinenizde geliştirme yaptığınız ve kapsayıcının SSL sertifikasını içeri aktarmadığınız durumlarda ortaya çıkar. Bu sorunu çözmek için, istemciyi oluşturmadan önce uygulamayı TLS/SSL doğrulamasını devre dışı bırakacak şekilde yapılandırın:
Öykünücünün MongoClient kimlik bilgilerini kullanarak yeni bir örneği oluşturun.
var client = new MongoClient(
"mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/admin?ssl=true&retrywrites=false"
);
db = client["cosmicworks"]
if "cosmicworks" not in client.list_database_names():
db.command(
{
"customAction": "CreateDatabase",
"offerThroughput": 400,
}
)
collection = db["products"]
if "products" not in db.list_collection_names():
db.command({"customAction": "CreateCollection", "collection": "products"})
Kapsayıcıda yeni bir öğe oluşturmak için kullanın update_one .
SSL hatası alırsanız, uygulamanız için TLS/SSL'yi devre dışı bırakmanız gerekebilir. Bu durum genellikle bir kapsayıcıda Azure Cosmos DB öykünücüsü kullanarak yerel makinenizde geliştirme yaptığınız ve kapsayıcının SSL sertifikasını içeri aktarmadığınız durumlarda ortaya çıkar. Bu sorunu çözmek için, istemciyi oluşturmadan önce uygulamayı TLS/SSL doğrulamasını devre dışı bırakacak şekilde yapılandırın:
var createKeyspace = await session.PrepareAsync("CREATE KEYSPACE IF NOT EXISTS cosmicworks WITH replication = {'class':'basicclass', 'replication_factor': 1};");
await session.ExecuteAsync(createKeyspace.Bind());
var createTable = await session.PrepareAsync("CREATE TABLE IF NOT EXISTS cosmicworks.products (id text PRIMARY KEY, name text)");
await session.ExecuteAsync(createTable.Bind());
kullanarak ExecuteAsynctabloda yeni bir öğe oluşturun. Öğeye özellik atamak için kullanın Bind .
var item = new
{
id = "68719518371",
name = "Kiama classic surfboard"
};
var createItem = await session.PrepareAsync("INSERT INTO cosmicworks.products (id, name) VALUES (?, ?)");
var createItemStatement = createItem.Bind(item.id, item.name);
await session.ExecuteAsync(createItemStatement);
Modülden , SSLContextve CERT_NONE içeri aktarınPROTOCOL_TLS_CLIENTssl. Ardından modülden içeri aktarın Clustercassandra.cluster . Son olarak modülden içeri aktarın PlainTextAuthProvidercassandra.auth .
from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONE
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
kullanarak SSLContextyeni bir TLS/SSL bağlam değişkeni oluşturun. Öykünücünün otomatik olarak imzalanan sertifikasını doğrulamamak için bağlamı yapılandırın.
kullanarak session.executeyeni bir anahtar alanı ve tablo oluşturun.
session.execute(
"CREATE KEYSPACE IF NOT EXISTS cosmicworks WITH replication = {'class':'ba"
"sicclass', 'replication_factor': 1};"
)
session.execute(
"CREATE TABLE IF NOT EXISTS cosmicworks.products (id text PRIMARY KEY, nam"
"e text)"
)
Tabloda yeni bir öğe oluşturmak için kullanın session.execute .
Client Türü ve auth ad alanını modülden içeri aktarıncassandra-driver.
import { Client, auth } from 'cassandra-driver'
Öykünücünün kimlik bilgileri için yeni bir nesne oluşturmak için kullanın PlainTextAuthProvider . Kimlik bilgilerini kullanarak öykünücüye bağlanmak için kullanın Client .
const credentials = new auth.PlainTextAuthProvider(
'localhost',
'C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=='
)
const client = new Client({
contactPoints: [
'localhost:10350'
],
authProvider: credentials,
localDataCenter: 'South Central US'
})
Anahtar alanı ve tablo oluşturmak üzere bir komut sunucusu tarafı çalıştırmak için kullanınexecute.
await client.execute(
'CREATE KEYSPACE IF NOT EXISTS cosmicworks WITH replication = {\'class\':\'basicclass\', \'replication_factor\': 1};'
)
await client.execute(
'CREATE TABLE IF NOT EXISTS cosmicworks.products (id text PRIMARY KEY, name text)'
)
Parametrelerle yeni bir öğe oluşturmak için yeniden kullanın execute .
SSL hatası alırsanız, uygulamanız için TLS/SSL'yi devre dışı bırakmanız gerekebilir. Bu durum genellikle bir kapsayıcıda Azure Cosmos DB öykünücüsü kullanarak yerel makinenizde geliştirme yaptığınız ve kapsayıcının SSL sertifikasını içeri aktarmadığınız durumlarda ortaya çıkar. Bu sorunu çözmek için istemciyi TLS/SSL doğrulamasını devre dışı bırakacak şekilde yapılandırın:
Başlamadan önce Apache Gremlin API'sinde öykünücüde kaynaklarınızı oluşturmanız gerekir. adlı bir veritabanı ve adlı db1coll1bir kapsayıcı oluşturun. Aktarım hızı ayarları bu kılavuz için ilgisizdir ve istediğiniz kadar düşük olarak ayarlanabilir.
var server = new GremlinServer(
hostname: "localhost",
port: 65400,
username: "/dbs/db1/colls/coll1",
password: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
);
using var client = new GremlinClient(
gremlinServer: server,
messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer()
);
Öykünücünün kimlik bilgileri için yeni bir nesne oluşturmak için kullanın PlainTextSaslAuthenticator . Kimlik bilgilerini kullanarak öykünücüye bağlanmak için kullanın Client .
Öykünücünün TableServiceClient kimlik bilgilerini kullanarak yeni bir örneği oluşturun.
var serviceClient = new TableServiceClient(
connectionString: "DefaultEndpointsProtocol=http;AccountName=localhost;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;TableEndpoint=http://localhost:8902/;"
);
SSL hatası alırsanız, uygulamanız için TLS/SSL'yi devre dışı bırakmanız gerekebilir. Bu durum genellikle bir kapsayıcıda Azure Cosmos DB öykünücüsü kullanarak yerel makinenizde geliştirme yaptığınız ve kapsayıcının SSL sertifikasını içeri aktarmadığınız durumlarda ortaya çıkar. Bu sorunu çözmek için istemciyi TLS/SSL doğrulamasını devre dışı bırakacak şekilde yapılandırın:
Uygulamanızı otomatik olarak doğrulayan sürekli tümleştirme iş yükünü çalıştırmak için, seçtiğiniz çerçeveden bir test paketiyle Azure Cosmos DB öykünücüsü kullanın. Azure Cosmos DB öykünücüsü, GitHub Action'ın barındırılan windows-latest çalıştırıcılarının varyantına önceden yüklenmiştir.