جدول سایه همان ساختار جدول اصلی را دارد اما داده‌های متفاوتی دارد. پیکان قرمز حرکت داده‌ها به سمت جدول سایه را نشان می‌دهد و سبز، عکس این را نشان می‌دهد.
**جداول سایه** اشیائی در علوم کامپیوتر هستند که برای بهبود نحوه مدیریت اطلاعات، ماشین‌آلات، شبکه‌ها و برنامه‌ها استفاده می‌شوند. به‌طور خاص، جدول سایه یک شئی است که توسط پردازنده خوانده و نوشته می‌شود و حاوی داده‌های مشابه(در همان قالب) جدول اصلی آن یعنی جدول «سایه‌انداز» است. جداول سایه معمولاً حاوی داده‌هایی هستند که مربوط به عملکرد و نگهداری جدول اصلی آن هستند، اما در زیر مجموعه داده‌های مورد نیاز برای وجود جدول اصلی نیستند. جداول سایه مربوط به نوع داده «مسیرها» در سیستم‌های ذخیره داده هستند. مسیرها بسیار شبیه جدول‌های سایه هستند اما آنها به جای ذخیره اطلاعات قالب‌بندی‌شده یکسان که متفاوت هستند (مانند جداول سایه)، تاریخچه ای از تغییرات و عملکردهای روی میز را ذخیره می‌کنند.

تاریخ
-----

جداول سایه، به عنوان یک مفهوم انتزاعی، از ابتدای محاسبات مدرن استفاده می‌شود. با این حال، استفاده گسترده از عبارت خاص «جدول سایه» زمانی آغاز شد که سیستم‌های مدیریت پایگاه داده رابطه ای (RDBMS) به‌طور گسترده در دهه ۱۹۷۰ مورد استفاده قرار گرفتند.

استفاده اولیه از DBMهای رابطه ای برای اهداف تجاری منجر به گسترده شدن اصطلاح «جداول سایه» شد. DBM رابطه ای از زمینه‌های داده مربوط (ستون‌ها) برای همبستگی اطلاعات بین جداول استفاده می‌کند. به عنوان مثال، دو جدول تراکنش\_کاربر و معامله\_معداد، هر دو دارای ستون «کلید» هستند و کلیدهای بین جداول با هم مطابقت دارند که در صورت مشخص بودن کلید، یافتن کاربر و مقدار معامله خاص را آسان می‌کند. این فناوری رابطه‌ای به افراد امکان می‌داد تا اطلاعات ذخیره شده در یک جدول اصلی و سایه آن را با یکدیگر مرتبط کنند.

برنامه‌های کاربردی
------------------

از آنجا که جداول سایه چنین مفهومی انتزاعی هستند، کاربردهای آنها در حوزه علوم کامپیوتر باقی مانده‌است. اگرچه ممکن است کاربرد آنها به‌طور خاص به عنوان «جدول (های) سایه» اعلام نشود، اما این مفهوم به همان شکل باقی مانده‌است. جداول سایه معمولاً به منظور بهبود عملکرد، ظرفیت و توانایی سیستم رایانه ای/شبکه ای موجود استفاده می‌شوند. در بیشتر برنامه‌ها، جدول‌های سایه معمولاً یک کپی کربنی از ساختار جداول اصلی خود اما با داده‌های منحصر به فرد هستند.

### کاربرد نظری

از آنجا که جداول سایه نوع خاصی از اشیا در علوم کامپیوتر هستند، برنامه‌ها بسیار متفاوت هستند، زیرا کاربرد آنها بستگی به این دارد که چه داده‌ای در جدول سایه ذخیره می‌شود و چگونه از آن داده استفاده می‌شود. در زیر فهرستی از برنامه‌های کلی و انتزاعی برای جداول سایه وجود دارد که شامل همه برنامه‌های دنیای واقعی است.

* ذخیره‌سازی - ذخیره‌سازی ورودی داده در جدول سایه که به‌طور معمول حذف یا اصلاح می‌شد.
* Encapsulation - قرار دادن داده‌ها در داخل جدول سایه به منظور جدا کردن مجموعه ای از داده‌ها از دیگری.
* Modularity - قرار دادن داده‌ها در داخل جدول سایه برای سهولت در اصلاح و مدیریت داده‌ها.

### برنامه‌های مهندسی

وقتی از جدول‌های سایه برای حل مشکلات فعلی در سیستم‌های رایانه ای/شبکه ای امروزی استفاده می‌شود، معمولاً ترکیبی از بیش از یکی از کاربردهای نظری/انتزاعی یادشده از جداول سایه استفاده می‌شود. لیست زیر یک زیرمجموعه بسیار کوچک از همه کاربردهای جداول سایه در دنیای واقعی است و فقط نشان داده شده‌است که نمونه ای از برنامه‌های رایج جداول سایه را نشان می‌دهد.

#### سیستم‌های مدیریت پایگاه داده

Database Management Systems (DBM) نرم‌افزاری هستند که نگهداری، امنیت و دستکاری جداول داده را کنترل می‌کنند. نمونه‌های شناخته شده و پرکاربرد DBMها SQL Server ,MySQL ,Oracle و PostgreSQL هستند. هر یک از این DBMها یک «محیط» مجازی ایجاد می‌کنند که جداول داده در آن نگهداری می‌شود و می‌توان از طریق نوع خاصی از زبان برنامه‌نویسی که به عنوان زبان پرس و جو شناخته می‌شود، برای آنها خواند و نوشت زبان‌های پرس‌وجو در اصلاح یا بازیابی مقدار زیاد و خاص داده تخصص دارند. بیشتر DBMهای مدرن به‌طور خاص از SQL (نوع خاصی از زبان جستجو) پشتیبانی می‌کنند. با استفاده از SQL به راحتی می‌توان جداولی ایجاد کرد که از ساختار مشابه جداول موجود برخوردار باشند. SQL همچنین می‌تواند داده‌های نوشته شده در این جداول جدید را به دست آورد و یک جدول سایه ایجاد کند. جداول سایه اغلب با DBMها استفاده می‌شوند تا با جلوگیری از انجام عملیات زائد توسط DBM، کارایی را بهبود بخشند. جداول سایه نیز در اکثر DBMهای مدرن به راحتی قابل اجرا هستند زیرا بر داده‌های اصلی تأثیر نمی‌گذارند، بنابراین نحوه کار پایگاه داده‌ها و برنامه‌های دستیابی به آنها تحت تأثیر قرار نمی‌گیرد، مگر اینکه مورد نظر باشد.

به عنوان مثال، جداول سایه می‌تواند در یک سیستم پشتیبان کارآمد مورد استفاده قرار گیرد که جداول داده بزرگ را پشتیبانی می‌کند و به ندرت تغییر می‌کنند.

1. بدون جداول سایه، می‌توان برنامه ای ایجاد کرد که به سادگی نسخه ای از آن جدول را هر روز ذخیره کند.

بعد از ۵۰ روز، با این سیستم پشتیبان، ۵۰ نسخه از همان جدول وجود دارد.
1. با استفاده از جداول سایه، می‌توان یک «جدول سایه» خالی از آن جدول ایجاد کرد و از برنامه ای استفاده کرد که هر بار که یک ردیف از جدول اصلی حذف می‌شود، یک کپی از یک ردیف را در جدول سایه قرار می‌دهد.

پس از ۵۰ روز با استفاده از سیستم جدول سایه در بدترین حالت، یک نسخه از جدول اصلی وجود دارد، با این فرض که هر سطر در جدول اصلی حذف شده باشد.
#### رابط

رابط کاربری فرایند استفاده از «لایه‌ها» برای ساده‌سازی ارتباطات بین فناوری‌ها و بین افراد و فناوری‌ها است. یک مثال از رابط لایه ای، دکمه‌ها و منوهایی است که توسط سیستم عامل‌های رایانه خانگی استفاده می‌شود. این اشیا گرافیکی به عنوان پیوندی به «دکمه‌های» اساسی سیستم عامل وجود دارند. کنسول فرمان یک سطح زیر این اشیا graph گرافیکی قرار دارد زیرا پیوندی نزدیکتر به عملکردهای اساسی سیستم عامل به شما می‌دهد.

جداول سایه اغلب به عنوان لایه‌هایی بین کاربر نهایی و پایگاه داده استفاده می‌شوند. به عنوان مثال، اگر کاربری به حساب بانکی خود وارد شود و سابقه کلیه معاملات گذشته خود را درخواست کند، پایگاه داده معمولاً تمام تراکنش‌های مربوط به همه کاربران را در یک جدول بزرگ ذخیره می‌کند و طرفین درگیر در هر معامله را در یک ستون مشخص تشخیص می‌دهد. از آن جدول در این مرحله سرور دو گزینه دارد:

1. پایگاه داده می‌تواند کل جدول معاملات را ارسال کند.
2. پایگاه داده می‌تواند یک جدول سایه ارسال کند که فقط شامل معاملات مربوط به کاربری است که تاریخ معاملات خود را درخواست کرده‌است.

گزینه دوم معمولاً مطلوب‌تر است زیرا باعث پهنای باند و قدرت پردازش در انتهای کاربر می‌شود. همچنین داده‌های معامله دیگران را ایمن نگه می‌دارد.

#### مجازی سازی سیستم عامل

مجازی سازی سیستم عامل فرایند شبیه‌سازی عملکرد رایانه در رایانه دیگری است. این تکنیک برای کسی مفید است که می‌خواهد همزمان بیش از یک نوع سیستم عامل روی رایانه شخصی خود اجرا کند. جداول صفحه سایه اغلب در شبیه‌سازی بیش از یک سیستم عامل در یک مجموعه واحد از حافظه و پردازنده استفاده می‌شوند. یک جدول صفحه توسط یک سیستم عامل برای نقشه‌برداری از حافظه مجازی، حافظه واقعی که توسط برنامه‌ها و سیستم عامل برای ذخیره اطلاعات استفاده می‌شود، به محل قرارگیری آن بر روی حافظه فیزیکی، حافظه اختصاصی سخت‌افزار ذخیره شده در بایت روی RAM (تصادفی حافظه دسترسی) یک جدول صفحه سایه یک جدول صفحه شبه در جدول صفحه اصلی رایانه است که به سیستم اجازه می‌دهد همزمان بیش از یک نوع سیستم عامل را اجرا کند.

منابع
-----

1. ↑  "Shadow Databases". *Supporting Advancements*. Retrieved 26 October 2011.
2. ↑  Ambler, Scott. "Shadow Information and Scaffolding". *Mapping Objects to Relational Databases: O/R Mapping In Detail*. Agile Data. Retrieved 28 October 2011.
3. ↑  Wehlou, Martin. "Shadows and Trails". *Wehlou*. Retrieved 26 October 2011.
4. ↑  Brown, Pete. "Mountain Man". *A Brief History of Modern RDBMS IT Management*. Retrieved 30 October 2011.
5. 1 2  Codd, Edgar (June 1970). "A Relational Model of Data for Large Shared Data Banks" (PDF). *Communications of the ACM*. **13** (6): 377–387. doi:10.1145/362384.362685. Retrieved 28 October 2011.
6. ↑  Kent, Jack, and Hector Garcia-Molina. 1988. p. 13.
7. ↑  Denning, P.J. "Page Tables". Archived from the original on 22 October 2011. Retrieved 30 October 2011.
8. ↑  "Virtualization: Architectural Considerations And Other Evaluation Criteria" (PDF). Retrieved 30 October 2011.

پیوند به بیرون
--------------

* مجازی سازی: ملاحظات معماری و سایر معیارهای ارزیابی
* مرد کوهستانی در تاریخچه پایگاه داده
* مشخصات برنامه Shadow Table