crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> [СИ] Длина сектора диска
oleg_2
  опции профиля:
сообщение 10.5.2010, 2:50
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 25.7.2009
Пользователь №: 943

Спасибо сказали: 1 раз(а)




Репутация:   0  


[СИ] Длина сектора диска

Язык СИ
ОС UNIX

База данных и транзакция.
Два вопроса.

Имеется файл строк, каждая строка это отдельная запись БД.
Нужно сделать транзакцию - изменить одну из этих строк.
При этом длина строки не меняется.
Должно выдерживать мягкий сбой (выключение питания).
Винт плохой и при сбое портит весь сектор (или иную минимальную порцию данных).
Значит я должен в журнале сохранить всё то, что может быть испорчено,
т. е. сектор (или секторы) содержащий эту строку.


Вопрос 1.

О длине сектора.
Как узнать длину сектора или иной порции данных,
которая может быть испорчена?

Вопрос 2.

Что если я буду для верности сохранять заведомо
большую порцию, а именнно 8 Кбайт, начало порции
кратно ей самой от начала файла.

Сработает ли такой подход?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.5.2010, 4:38
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


встречный вопрос: почему бы не использовать журналируемую ФС или системы с избыточным хранением данных (RAID и т.п.)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
oleg_2
  опции профиля:
сообщение 10.5.2010, 5:00
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 25.7.2009
Пользователь №: 943

Спасибо сказали: 1 раз(а)




Репутация:   0  


Программа может работать на разных машинах
и не всегда есть возможность выбора.
А если такая возможность будет,
тогда в настройках программы можно уменьшить
страховочные действия. Сейчас хотелось бы
заложить побольше, чтоб могла надежно работать
где угодно.
RAID-1 решает проблему поломки всего или части диска,
(жесткий сбой), но как отработает отключение питания
полной уверенности нет.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.5.2010, 5:09
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


тут есть один нюанс - концепция Цилиндр-Головка-Сектор (ЦГС) морально устарела. И представляет собой некие вымышленные цифры.
Т.е. размер сектора указанный на жёстком диске не соответсвует размеру элементарной порции данных на жёстком диске.

Я думаю тебе следует посмотреть в сторону современных СУБД, например, как Firebird решает подобные проблемы. По этому поводу в книге Хелен Бори написана целая глава.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
oleg_2
  опции профиля:
сообщение 10.5.2010, 5:26
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 25.7.2009
Пользователь №: 943

Спасибо сказали: 1 раз(а)




Репутация:   0  


Спасибо.

Не знаю как найти эту книгу.
Если можно приведите название книги,
хотя бы приблизительно .

И ещё.
Вы пишете
"размер сектора указанный на жёстком диске
не соответсвует размеру элементарной порции
данных на жёстком диске".
А вопрос 2 в начале темы не решит ли эту проблему?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.5.2010, 6:56
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(oleg_2 @ 10.5.2010, 9:26) *
Не знаю как найти эту книгу.
Если можно приведите название книги,
хотя бы приблизительно .
тыц

Цитата(oleg_2 @ 10.5.2010, 9:26) *
А вопрос 2 в начале темы не решит ли эту проблему?
Не знаю. Я не вникал в устройство реальных БД/ФС.
Цитата(oleg_2 @ 10.5.2010, 6:50) *
Значит я должен в журнале сохранить всё то, что может быть испорчено,
т. е. сектор (или секторы) содержащий эту строку.
факт: испорчено может быть любое кол-во данных в любых местах. Если действительно нужна надёжность, то нужно избыточное хранение данных.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
oleg_2
  опции профиля:
сообщение 10.5.2010, 8:09
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 25.7.2009
Пользователь №: 943

Спасибо сказали: 1 раз(а)




Репутация:   0  


Спасибо
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 11.5.2010, 6:50
Сообщение #8


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


да испорчена может быть хоть таблица разметки диска. сейчас у винтов есть ещё своё кэширование и множество прочих фич.

а насчёт такой дикой безопасности, да ещё и переносимости - существуют БД типа Оракла: они ставят свои дрова на низком уровне и там химичат нипадеццки, проверяя всё и вся на валидность и умея восстанавливаться при серьёзных сбоях. только стоит эта беда порядка 50 килобаксов за инсталляцию и эта цена отчасти оправдывает усилия, затраченные на её разработку. сделать подобие с нуля - это... как бы это сказать-то... в общем, можно начать, потомки допишут :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
oleg_2
  опции профиля:
сообщение 12.5.2010, 2:06
Сообщение #9


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 25.7.2009
Пользователь №: 943

Спасибо сказали: 1 раз(а)




Репутация:   0  


Спасибо за отклик.

Что касается других повреждений
разметки диска
порча каталогов
поломка диска
Знаю только одно средство: резервная копия.
На подступе к этому вопросу предчувствую
проблему своевременного выявления таких
больших дефектов (это потом).

По кэшированию и другим фичам:
Побольше бы узнать об этом.
Якобы кэширование можно отключить.

Пока прошу вернуться к поставленным вопросам.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 20.5.2010, 8:20
Сообщение #10


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


В Firebird-е, МИХО, при создании базы указывается размер страницы, и далее сервер оперирует уже именно этими страницами как минимальной единицей обмена с диском.

А по сабжу - это зависит от конкретной ФС, стало быть и узнавать нужно у драйвера ФС.
Кроме того, нужно учитывать систему ввода/вывода ОС, которая все подключенные ФС абстрагирует а данные кеширует, так что напрямую прочитать/записать сектор в устройство может быть довольно не постое занятие с учётом разнообразия устройств, ФС и ОС. :)

Так что если это курсовик, то задание поставлено не корректно - нужно уточнить ОС, ФС и хотя бы тип устройства (винт, флеха, SSD, сеть...). :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 14:50