ترحيل قواعد البيانات الموجودة لتوسيع نطاقها

ينطبق على: قاعدة بيانات Azure SQL

أدِر بسهولة قواعد البيانات المُقسَّمة الحالية والمُقسَّمة باستخدام أدوات (مثل مكتبة عميل قاعدة البيانات المرنة ). قم أولاً بتحويل مجموعة موجودة من قواعد البيانات لاستخدام مدير خرائط الأجزاء .

نظرة عامة

لترحيل قاعدة بيانات مجزأة موجودة:

  1. قم بإعداد قاعدة بيانات مدير خرائط الأجزاء .
  2. قم بإنشاء مخطط الجزء.
  3. تحضير الأجزاء الفردية.
  4. إضافة تعيينات إلى مخطط الأجزاء.

يمكن تنفيذ هذه الأساليب باستخدام إما مكتبة عميل .NET Framework أو البرامج النصية PowerShell الموجودة في Azure SQL Database – البرامج النصية لأدوات قاعدة البيانات المرنة. تستخدم الأمثلة هنا البرامج النصية بوويرشيل.

لمزيد من المعلومات حول ShardMapManager، راجع إدارة خريطة Shard . للحصول على نظرة عامة حول أدوات "قاعدة البيانات المرنة"، راجع نظرة عامة على ميزات قاعدة البيانات المرنة .

تحضير قاعدة بيانات مدير مخطط الأجزاء

إدارة مخطط الأجزاء هو قاعدة بيانات خاصة تحتوي على البيانات لإدارة قواعد البيانات المتدرج. يمكنك استخدام قاعدة بيانات موجودة أو إنشاء قاعدة بيانات جديدة. يجب ألا تكون قاعدة البيانات التي تعمل كمدير خريطة جزء هي نفس قاعدة البيانات مثل جزء. لا يُنشئ البرنامج النصي PowerShell قاعدة البيانات لك.

الخطوة 1: إنشاء مدير مخطط الجزء

# Create a shard map manager
New-ShardMapManager -UserName '<user_name>' -Password '<password>' -SqlServerName '<server_name>' -SqlDatabaseName '<smm_db_name>'
#<server_name> and <smm_db_name> are the server name and database name
# for the new or existing database that should be used for storing
# tenant-database mapping information.

لاسترداد مدير مخطط الجزء

بعد الإنشاء، يمكنك استرداد مدير خريطة الجزء مع هذا cmdlet. هذه الخطوة مطلوبة في كل مرة تحتاج فيها إلى استخدام كائن ShardMapManager.

# Try to get a reference to the Shard Map Manager  
$ShardMapManager = Get-ShardMapManager -UserName '<user_name>' -Password '<password>' -SqlServerName '<server_name>' -SqlDatabaseName '<smm_db_name>'

الخطوة 2: إنشاء خريطة الجزء

حدد نوع خريطة الجزء المراد إنشاؤه. يعتمد الاختيار على بنية قاعدة البيانات:

  1. مستأجر واحد لكل قاعدة بيانات (للحصول على الشروط، راجع المسرد .)
  2. عدة مستأجرين لكل قاعدة بيانات (نوعان):
    1. تعيين القائمة
    2. تعيين النطاق

لنموذج مستأجر واحد، قم بإنشاء مخطط جزء تعيين قائمة. يخصص نموذج المستأجر الفردي قاعدة بيانات واحدة لكل مستأجر. هذا نموذج فعال لمطوري SaaS لأنه يبسط الإدارة.

List mapping

يعيّن نموذج المستأجرين المتعددين عدة مستأجرين لقاعدة بيانات فردية (ويمكنك توزيع مجموعات المستأجرين عبر قواعد بيانات متعددة). استخدم هذا النموذج عندما تتوقع أن يكون لكل مستأجر احتياجات بيانات صغيرة. في هذا النموذج، قم بتعيين نطاق من المستأجرين إلى قاعدة بيانات باستخدام تعيين النطاق.

Range mapping

أو يمكنك تنفيذ نموذج قاعدة بيانات متعددة المستأجرين باستخدام تعيين قائمة لتعيين مستأجرين متعددين لقاعدة بيانات فردية. على سبيل المثال، يتم استخدام DB1 لتخزين معلومات عن معرف المستأجر 1 و5، ويقوم DB2 بتخزين البيانات للمستأجر 7 والمستأجر 10.

Multiple tenants on single DB

بناءً على اختيارك، اختر أحد الخيارات التالية:

الخيار 1: إنشاء مخطط جزء لتعيين قائمة

قم بإنشاء مخطط جزء باستخدام كائن ShardMapManager.

# $ShardMapManager is the shard map manager object
$ShardMap = New-ListShardMap -KeyType $([int]) -ListShardMapName 'ListShardMap' -ShardMapManager $ShardMapManager

الخيار 2: إنشاء مخطط جزء لتعيين نطاق

لاستخدام نمط التعيين هذا، يجب أن تكون قيم معرف المستأجر نطاقات مستمرة، ومن المقبول وجود فجوة في النطاقات عن طريق تخطي النطاق عند إنشاء قواعد البيانات.

# $ShardMapManager is the shard map manager object
# 'RangeShardMap' is the unique identifier for the range shard map.  
$ShardMap = New-RangeShardMap -KeyType $([int]) -RangeShardMapName 'RangeShardMap' -ShardMapManager $ShardMapManager

الخيار 3: تعيينات القائمة على قاعدة بيانات فردية

يتطلب إعداد هذا النمط أيضاً إنشاء خريطة قائمة كما هو موضح في الخطوة 2، الخيار 1.

الخطوة 3: تحضير الأجزاء الفردية

إضافة كل جزء (قاعدة بيانات) إلى مدير مخطط الأجزاء. هذا يعد قواعد البيانات الفردية لتخزين معلومات الخرائط. نفذ هذه الطريقة على كل جزء.

Add-Shard -ShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
# The $ShardMap is the shard map created in step 2.

الخطوة 4: أضف التعيينات

تعتمد إضافة التعيينات على نوع خريطة الأجزاء التي أنشأتها. إذا قمت بإنشاء خريطة قائمة، يمكنك إضافة تعيينات القائمة. إذا قمت بإنشاء خريطة نطاق، يمكنك إضافة تعيينات النطاق.

الخيار 1: تعيين البيانات لتعيين قائمة

قم بتعيين البيانات عن طريق إضافة تعيين قائمة لكل مستأجر.

# Create the mappings and associate it with the new shards
Add-ListMapping -KeyType $([int]) -ListPoint '<tenant_id>' -ListShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'

الخيار 2: تعيين البيانات لتعيين النطاق

أضف تعيينات النطاق لجميع نطاق معرف المستأجر – اقترانات قاعدة البيانات:

# Create the mappings and associate it with the new shards
Add-RangeMapping -KeyType $([int]) -RangeHigh '5' -RangeLow '1' -RangeShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'

الخطوة 4 – الخيار 3: قم بتعيين البيانات الخاصة بالمستأجرين المتعددين في قاعدة بيانات فردية

لكل مستأجر، قم بتشغيل Add-ListMapping (الخيار 1).

فحص التعيينات

يمكن الاستعلام عن معلومات حول الأجزاء الموجودة والتعيينات المرتبطة بها باستخدام الأوامر التالية:

# List the shards and mappings
Get-Shards -ShardMap $ShardMap
Get-Mappings -ShardMap $ShardMap

الملخص

بمجرد الانتهاء من الإعداد، يمكنك البدء في استخدام مكتبة عميل Elastic Database. يمكنك أيضاً استخدام التوجيه المعتمد على البيانات و استعلام متعدد الأجزاء .

الخطوات التالية

احصل على نصوص PowerShell النصية من البرامج النصية لأدوات قاعدة بيانات مرنة Azure Elastic .

مكتبة عميل أدوات قاعدة البيانات المرنة متاحة على GitHub: Azure / elastic-db-tools .

استخدم أداة الدمج المنقسم لنقل البيانات من أو إلى نموذج متعدد المستأجرين إلى نموذج مستأجر واحد. راجع أداة دمج الانقسام.

الموارد الإضافية

للحصول على معلومات حول أنماط بنية البيانات الشائعة لتطبيقات قاعدة بيانات البرامج كخدمة (SaaS) متعددة المستأجرين، راجع أنماط التصميم لتطبيقات SaaS متعددة المستأجرين باستخدام قاعدة بيانات Azure SQL .

الأسئلة وطلبات الميزات

بالنسبة للأسئلة، استخدم صفحة أسئلة Microsoft Q&A لقاعدة بيانات SQL ولطلبات الميزات، قم بإضافتها إلى منتدى ملاحظات قاعدة بيانات SQL.