Що таке SSTable?


Відповіді:


105

Таблиця відсортованих рядків (запозичена у google) - це файл пар рядків ключ / значення, відсортований за ключами


4
Дякую за ще одну чудову відповідь ТАК Кассандра! До речі, ви бачили це питання: stackoverflow.com/questions/2573106 / ...
knorv

Це взагалі незмінне?
Дін J

1
так, sstables незмінні за дизайном - що є приголомшливою особливістю
Schildmeijer

Як тоді можна сортувати і непорушно?
xjcl

56

"SSTable забезпечує стійку впорядковану незмінну карту від ключів до значень, де і клавіші, і значення є довільними рядками байтів. Операції передбачені для пошуку значення, пов'язаного з вказаним ключем, та для повторення всіх пар ключів / значень у Внутрішнє, кожен SSTable містить послідовність блоків (зазвичай кожен блок має розмір 64 КБ, але це налаштовується). Індекс блоку (зберігається в кінці SSTable) використовується для пошуку блоків; індекс завантажується в пам'ять, коли відкрито SSTable.Пошук можна здійснити за допомогою одного пошуку диска: ми спочатку знаходимо відповідний блок, виконавши двійковий пошук в індексі пам'яті, а потім зчитуємо відповідний блок з диска. Необов'язково, SSTable може бути повністю відображено в пам'яті, що дозволяє нам виконувати пошук і сканування, не торкаючись диска."


4
"без торкання диска" -> "без усвідомлення того, що диск торкається". IO, відображений на пам'яті, є дуже зручною технікою, оскільки він делегує фактичний IO в ОС, припускаючи, що він може зробити хорошу роботу в кешуванні (особливо, коли декілька процесів мають один і той же файл). Але є недоліком того, що ти не маєш цього контролювати. Якщо сторінка не зберігається в пам'яті, потік блокується і не може виконувати інші операції; порівняйте його з "async IO", де ви можете зареєструвати зворотний дзвінок та виконувати інші речі в тій же нитці, поки IO очікує на розгляд.
ithkuil

2
@ithkuil: Ви можете абсолютно керувати пам'яттю, нанесеною на IO, принаймні, до того, що зможете переконатися, що певні сторінки є в пам'яті або були диск на диск (все ще є місце для вивішування сторінок, які не гарантовано перебувають у пам'ять, але дуже добре може бути). Саме це і є про дивовижні речі, такі як mlock (), msync () та MAP_LOCKED. Ви також можете зрозуміти, що наразі є, а що не піддається тим, що проходить через mincore ().
Крістофер Сміт

2
@ChristopherSmith: так, ви праві, є способи контролювати це. Однак, як правило, він використовується для критичних розділів продуктивності (у режимі реального часу) або проблем, пов’язаних із безпекою (наприклад, уникнення того, що на диску буде замінено пароль в пам'яті). Файли, зіставлені з пам’яттю, дуже корисні саме тому, що вам не потрібно вирішувати, скільки з них зберігати в пам’яті; інакше ви можете просто прочитати весь файл в пам'яті без mmap і домогтися того ж ефекту. Насправді я просто прогризнувся через код кассандри; єдиний дзвінок mlockall(MCL_CURRENT);робиться при запуску. Дивіться також: goo.gl/AEgPM
ithkuil

4
Вищенаведена цитата - з паперу BigTable .
ShreevatsaR

4

Планшет зберігається у формі SSTables.

SSTable (безпосередньо відображений у GFS) - це незмінне сховище на основі ключових значень. Він зберігає шматки даних, кожен має 64 КБ.

Визначення:

  • Покажчик клавіш: клавіша та початкове місце розташування
  • Чанка - це одиниця зберігання в GFS, управління репліками здійснюється за допомогою шматка

3
  • SSTable (англ. Сортована таблиця рядків) - це файл пар рядків ключ / значення, відсортований за клавішами.

  • SSTable забезпечує стійку впорядковану незмінну карту від ключів до значень, де і клавіші, і значення є довільними рядками байтів.

  • Всередині кожного SSTable містить послідовність блоків (зазвичай
    кожен блок має розмір 64 КБ, але це налаштовується).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.