Драйвер файловой системы для СУБД
От: Аноним  
Дата: 03.07.13 05:24
Оценка: 2 (1)
Здравствуйте такой вопрос, делаю дипломную работу СУБД, в принципе практически сделал, ядро базы на В-деревьях, SQL движок на бизоне, сделал транзакции и пр. Но поскольку еще есть целый год, хочу попробовать в академических целей, сделать файловую систему для БД. Пока представляю себе так что раздел диска полностью будет под СУБД. Так же с учетом того что запись происходит по странично (как в основной файл БД, так и при транзакции в лог транзакции), и больше ни кто не будет обращаться к этому разделу, то хочу использовать эту информации при реализации драйвера.
И как мне кажется, еще при транзакции могу с экономить на одной операции flush. То есть при транзакции типа UNDO (с REDO по сути так же), пока идут какие то действия с базой, происходит сохранение в лог/файл транзакции "оригинальных" страниц. После того как был вызван commit, я делаю вызов Flush что бы наверняка сбросить все "оригинальные страницы" в лог транзакции на диске, после этого я сохраняю еще одну страницу в логе транзакции в которой помечаю что такая стадия завершена и снова делаю Flush. Дальше я сохраняю изменённые страницу уже в основной файл БД и в конце снова делаю Flush, а потом в логе транзакции помечаю что все ок и опять Flush, а уже после удаляю файл транзакции.
Как мне кажется если бы я мог в драйвере сделать настройку что такую то страницу нужно сохранять последней, либо что после сброса всего на диск записать определенный флажек на диске то будет быстрее (но опять же все в рамках учебы)
И у меня собственно вопрос в том возможно ли такое в Windows, я только начал изучать материал, WDK смотреть примеры. Так понимаю, есть уровень HAL, через который по сути можно работать с диском и (на моем пока примитивном понимании), выполнять команды типа с позиционируйся суда, запиши вот это?
Re: Драйвер файловой системы для СУБД
От: acDev Россия  
Дата: 03.07.13 06:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Так понимаю, есть уровень HAL, через который по сути можно работать с диском и (на моем пока примитивном понимании), выполнять команды типа с позиционируйся суда, запиши вот это?


Это совсем другой уровень работы с диском, на котором вы врятли получите прирост скорости, т.к. я сомневаюсь что вы будете воспроизводить то, что умеет делать "стандартный дисковый драйвер".
Да и не вижу вообще необходимости в своём драйвере, т.к. посылая команды "стандартному дисковому драйверу" можно отчасти реализовать ваши "хотелки".
Re[2]: Драйвер файловой системы для СУБД
От: Аноним  
Дата: 03.07.13 06:38
Оценка:
Здравствуйте, acDev, Вы писали:
D>Это совсем другой уровень работы с диском, на котором вы врятли получите прирост скорости, т.к. я сомневаюсь что вы будете воспроизводить то, что умеет делать "стандартный дисковый драйвер".
D>Да и не вижу вообще необходимости в своём драйвере, т.к. посылая команды "стандартному дисковому драйверу" можно отчасти реализовать ваши "хотелки".

Я не стремлюсь сделать быстрее, мне просто хочется это сделать в рамках обучения, и приобретения опыта в системном программировании для Windows, я даже практически уверен что выигрыша ни какого не получу. И как мне кажется, реализация файловой системы как раз позволит узнать многое о тонкостях разработки драйверов, синхронизации, и внутреннего устройства Windows и пр. Сейчас как раз читаю вторую часть Windows Internals, 6th Edition. Part 2, про файловые системы.
Re: Драйвер файловой системы для СУБД
От: Kubyshev Andrey  
Дата: 05.07.13 03:45
Оценка:
Что ты такое пришешь интересное! Сейчас за тобой Шойгу придет!
Re: Драйвер файловой системы для СУБД
От: Kubyshev Andrey  
Дата: 05.07.13 03:48
Оценка:
Можно например вместо драйвера диска сделать поддержку failover кластеризации.
Это попроще драйвера, но зато неоспоримо полезно для сервера баз данных.
Re[2]: Драйвер файловой системы для СУБД
От: Kubyshev Andrey  
Дата: 07.07.13 08:37
Оценка:
А также инсталяшку и двайвер odbc или для .net дата провайдера...
Ты пиши, нам интересно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.