حالة الاستخدام الشائعة للمحاكي هي أن تكون بمثابة قاعدة بيانات تطوير أثناء إنشاء تطبيقاتك. يمكن أن يساعدك استخدام المحاكي للتطوير على تعلم خصائص إنشاء البيانات ونمذجتها لقاعدة بيانات مثل Azure Cosmos DB دون تكبد أي تكاليف خدمة. بالإضافة إلى ذلك، يمكن أن يضمن استخدام المحاكي كجزء من سير عمل التنفيذ التلقائي أنه يمكنك تشغيل نفس مجموعة اختبارات التكامل. يمكنك التأكد من تشغيل نفس الاختبارات محليا على جهاز التطوير الخاص بك وعن بعد في مهمة تكامل مستمرة.
لا يدعم متغير حاوية Docker (Linux أو Windows) للمحاكي واجهة برمجة التطبيقات ل Apache Cassandra أو API ل Apache Gremlin أو واجهة برمجة التطبيقات للجدول.
للبدء، قم بتنزيل وتثبيت أحدث إصدار من Azure Cosmos DB Emulator على الكمبيوتر المحلي.
تلميح
تسرد مقالة ملاحظات إصدار المحاكي جميع الإصدارات المتوفرة وتحديثات الميزات التي تم إجراؤها في كل إصدار.
لا يدعم متغير حاوية Docker للمحاكي واجهة برمجة التطبيقات ل Apache Cassandra.
ابدأ تشغيل الملف القابل للتنفيذ للمحاكي (Microsoft.Azure.Cosmos.Emulator.exe) في %ProgramFiles%\Azure Cosmos DB Emulator المسار. استخدم هذه المعلمات لتكوين المحاكي:
الوصف
EnableCassandraEndpoint
تمكين واجهة برمجة التطبيقات لنقطة نهاية Apache Cassandra.
لا يدعم متغير حاوية Docker للمحاكي واجهة برمجة التطبيقات ل Apache Gremlin.
ابدأ تشغيل الملف القابل للتنفيذ للمحاكي (Microsoft.Azure.Cosmos.Emulator.exe) في %ProgramFiles%\Azure Cosmos DB Emulator المسار. استخدم هذه المعلمات لتكوين المحاكي:
الوصف
EnableGremlinEndpoint
تمكين واجهة برمجة التطبيقات لنقطة نهاية Apache Gremlin.
لا يدعم متغير حاوية Docker للمحاكي واجهة برمجة التطبيقات للجدول.
ابدأ تشغيل الملف القابل للتنفيذ للمحاكي (Microsoft.Azure.Cosmos.Emulator.exe) في %ProgramFiles%\Azure Cosmos DB Emulator المسار. استخدم هذه المعلمات لتكوين المحاكي:
انتقل إلى https://localhost:8081/_explorer/index.html للوصول إلى مستكشف البيانات.
لا تدعم صورة حاوية Docker (Windows) واجهة برمجة التطبيقات ل MongoDB.
ابدأ تشغيل الملف القابل للتنفيذ للمحاكي (Microsoft.Azure.Cosmos.Emulator.exe) في %ProgramFiles%\Azure Cosmos DB Emulator المسار. استخدم هذه المعلمات لتكوين المحاكي:
الوصف
EnableMongoDbEndpoint
تمكين واجهة برمجة التطبيقات لنقطة نهاية MongoDB في إصدار MongoDB المحدد.
لا يدعم متغير حاوية Docker (Linux أو Windows) للمحاكي واجهة برمجة التطبيقات ل Apache Cassandra أو API ل Apache Gremlin أو واجهة برمجة التطبيقات للجدول.
يقوم التثبيت المحلي ل Windows للمحاكي باستيراد شهادات TLS/SSL تلقائيا. ولا يلزم اتخاذ أي إجراء آخر.
قد تحتاج إلى تغيير المضيف (أو عنوان IP) ورقم المنفذ إذا كنت قد قمت بتعديل هذه القيم مسبقا.
قم بتثبيت الشهادة وفقا للعملية المستخدمة عادة لنظام التشغيل الخاص بك. على سبيل المثال، في Linux، يمكنك نسخ الشهادة /usr/local/share/ca-certificates/ إلى المسار.
بالنسبة لأنظمة linux، أعد إنشاء حزمة الشهادة باستخدام الأمر المناسب لتوزيع Linux الخاص بك.
بالنسبة لأنظمة Linux المستندة إلى Debian (على سبيل المثال، Ubuntu)، استخدم:
sudo update-ca-certificates
بالنسبة لأنظمة Linux المستندة إلى Red Hat (على سبيل المثال، CentOS، Fedora)، استخدم:
sudo update-ca-trust
للحصول على إرشادات أكثر تفصيلا، راجع الوثائق الخاصة بنظام التشغيل الخاص بك.
تتوفر شهادة المحاكي في المجلد C:\CosmosDB.Emulator\bind-mount الموجود على الحاوية قيد التشغيل. يحتوي المجلد أيضا على برنامج نصي لتثبيت الشهادة تلقائيا.
استخدم docker cp لنسخ المجلد بأكمله إلى جهازك المحلي.
يقوم التثبيت المحلي ل Windows للمحاكي باستيراد شهادات TLS/SSL تلقائيا. ولا يلزم اتخاذ أي إجراء آخر.
الاتصال بالمحاكي من SDK
يتضمن كل SDK فئة عميل تستخدم عادة لتوصيل SDK بحساب Azure Cosmos DB الخاص بك. باستخدام بيانات اعتماد المحاكي، يمكنك توصيل SDK بمثيل المحاكي بدلا من ذلك.
var item = new
{
id = "68719518371",
name = "Kiama classic surfboard"
};
await container.UpsertItemAsync(item);
تشغيل تطبيق .NET.
dotnet run
تحذير
إذا تلقيت خطأ SSL، فقد تحتاج إلى تعطيل TLS/SSL لتطبيقك. يحدث هذا عادة إذا كنت تقوم بالتطوير على جهازك المحلي، باستخدام محاكي Azure Cosmos DB في حاوية، ولم تستورد شهادة SSL للحاوية. لحل هذه المشكلة، قم بتكوين خيارات العميل لتعطيل التحقق من صحة TLS/SSL قبل إنشاء العميل:
إذا تلقيت خطأ SSL، فقد تحتاج إلى تعطيل TLS/SSL لتطبيقك. يحدث هذا عادة إذا كنت تقوم بالتطوير على جهازك المحلي، باستخدام محاكي Azure Cosmos DB في حاوية، ولم تستورد شهادة SSL للحاوية. لحل هذه المشكلة، قم بتكوين التطبيق لتعطيل التحقق من صحة TLS/SSL قبل إنشاء العميل:
import urllib3
urllib3.disable_warnings()
إذا كنت لا تزال تواجه أخطاء SSL، فمن المحتمل أن تقوم Python باسترداد الشهادات من مخزن شهادات مختلف. لتحديد المسار الذي تبحث فيه Python عن الشهادات، اتبع الخطوات التالية:
هام
إذا كنت تستخدم بيئة Python الظاهرية (venv) فتأكد من تنشيطها قبل تشغيل الأوامر!
قم بفتح محطة طرفية
ابدأ تشغيل مترجم Python بكتابة python أو python3، اعتمادا على إصدار Python الخاص بك.
في مترجم Python، قم بتشغيل الأوامر التالية:
from requests.utils import DEFAULT_CA_BUNDLE_PATH
print(DEFAULT_CA_BUNDLE_PATH)
داخل بيئة ظاهرية، قد يكون المسار (على الأقل في Ubuntu):
خارج بيئة ظاهرية، قد يكون المسار (على الأقل في Ubuntu):
/etc/ssl/certs/ca-certificates.crt
بمجرد تحديد DEFAULT_CA_BUNDLE_PATH، افتح محطة طرفية جديدة وقم بتشغيل الأوامر التالية لإلحاق شهادة المحاكي إلى حزمة الشهادة:
هام
إذا DEFAULT_CA_BUNDLE_PATH يشير المتغير إلى دليل نظام، فقد تواجه خطأ "تم رفض الإذن". في هذه الحالة، ستحتاج إلى تشغيل الأوامر بامتيازات مرتفعة (كجذر). أيضا، ستحتاج إلى تحديث وإعادة إنشاء حزمة الشهادة بعد تنفيذ الأوامر المتوفرة.
# 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، فقد تحتاج إلى تعطيل TLS/SSL لتطبيقك. يحدث هذا عادة إذا كنت تقوم بالتطوير على جهازك المحلي، باستخدام محاكي Azure Cosmos DB في حاوية، ولم تستورد شهادة SSL للحاوية. لحل هذه المشكلة، قم بتكوين التطبيق لتعطيل التحقق من صحة TLS/SSL قبل إنشاء العميل:
إنشاء مثيل MongoClient جديد لاستخدام بيانات اعتماد المحاكي.
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"})
إذا تلقيت خطأ SSL، فقد تحتاج إلى تعطيل TLS/SSL لتطبيقك. يحدث هذا عادة إذا كنت تقوم بالتطوير على جهازك المحلي، باستخدام محاكي Azure Cosmos DB في حاوية، ولم تستورد شهادة SSL للحاوية. لحل هذه المشكلة، قم بتكوين التطبيق لتعطيل التحقق من صحة TLS/SSL قبل إنشاء العميل:
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());
إنشاء عنصر جديد في الجدول باستخدام ExecuteAsync. استخدم 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);
تشغيل تطبيق .NET.
dotnet run
استخدم برنامج تشغيل Apache Cassandra Python للاتصال بالمحاكي من تطبيق Python.
استيراد PROTOCOL_TLS_CLIENTو SSLContextو CERT_NONE من الوحدة النمطية ssl . ثم قم بالاستيراد Cluster من الوحدة النمطية cassandra.cluster . وأخيرا، استيراد PlainTextAuthProvider من الوحدة النمطية cassandra.auth .
from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONE
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
إنشاء متغير سياق TLS/SSL جديد باستخدام SSLContext. قم بتكوين السياق لعدم التحقق من شهادة المحاكي الموقعة ذاتيا.
إنشاء مساحة مفتاح وجدول جديد باستخدام session.execute.
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)"
)
استخدم session.execute لإنشاء عنصر جديد في الجدول.
Client استيراد النوع ومساحة auth الاسم من الوحدة النمطيةcassandra-driver.
import { Client, auth } from 'cassandra-driver'
استخدم PlainTextAuthProvider لإنشاء كائن جديد لبيانات اعتماد المحاكي. استخدم 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'
})
استخدم execute لتشغيل أمر من جانب الخادم لإنشاء مساحة مفتاح وجدول.
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)'
)
استخدم execute مرة أخرى لإنشاء عنصر جديد مع معلمات.
إذا تلقيت خطأ SSL، فقد تحتاج إلى تعطيل TLS/SSL لتطبيقك. يحدث هذا عادة إذا كنت تقوم بالتطوير على جهازك المحلي، باستخدام محاكي Azure Cosmos DB في حاوية، ولم تستورد شهادة SSL للحاوية. لحل هذه المشكلة، قم بتكوين العميل لتعطيل التحقق من صحة TLS/SSL:
قبل البدء، تتطلب واجهة برمجة التطبيقات ل Apache Gremlin إنشاء مواردك في المحاكي. إنشاء قاعدة بيانات باسم db1 وحاوية باسم coll1. إعدادات معدل النقل غير ذات صلة لهذا الدليل ويمكن تعيينها منخفضة كما تريد.
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()
);
var serviceClient = new TableServiceClient(
connectionString: "DefaultEndpointsProtocol=http;AccountName=localhost;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;TableEndpoint=http://localhost:8902/;"
);
إذا تلقيت خطأ SSL، فقد تحتاج إلى تعطيل TLS/SSL لتطبيقك. يحدث هذا عادة إذا كنت تقوم بالتطوير على جهازك المحلي، باستخدام محاكي Azure Cosmos DB في حاوية، ولم تستورد شهادة SSL للحاوية. لحل هذه المشكلة، قم بتكوين العميل لتعطيل التحقق من صحة TLS/SSL:
لتشغيل حمل عمل تكامل مستمر يتحقق تلقائيا من صحة التطبيق الخاص بك، استخدم محاكي Azure Cosmos DB مع مجموعة اختبار من إطار العمل الذي تختاره. يتم تثبيت محاكي Azure Cosmos DB مسبقا في windows-latest متغير المشغلات المستضافة في GitHub Action.