Флейм
GameDev.ru / Флейм / Форум / Монолитная база данных VS простые файлы

Монолитная база данных VS простые файлы

Страницы: 1 2 3 4 5 6 7 Следующая »
-=MASTER=-Постоялецwww12 фев. 201816:27#0
Почему люди не используют файловую систему в качестве базы данных? Создал папку и в ней кучу файлов или подпапок с кучей файлов. К каждой сущности БД привязан свой файл и теоретически можно работать параллельно с каждым файлом из разных потоков/процессов, чего нельзя делать в случае того же MySQL и пр, то есть в случае файлов, всё упирается в контроллер харда и его возможности.  Так собственно в чём подвох?
P.S.: разумеется, в оперативной памяти можно кэш делать и тд и тп...
kiparПостоялецwww12 фев. 201816:29#1
-=MASTER=-
как транзакции организовывать?
Как поиск делать - перебором всех записей?
0iStalkerМодераторwww12 фев. 201816:30#2
-=MASTER=-
> Так собственно в чём подвох?

Подвох в том, что БД не только хранит, но и позволяет искать с помощью языка запросов (а с помощью индексов, искать быстро), а у FS только FindFirst и FindNext

ZonoIDПостоялецwww12 фев. 201817:07#3
0iStalker
Что мешает организовать записи необходимым образом и пометить индексами?
Джек АллигаторПостоялецwww12 фев. 201817:33#4
-=MASTER=-, начать хотя бы с того, что доступ к куче мелких файлов на обычном харде вносит лютые тормоза. ССД - скажешь ты, авотхер - скажут юзвери.

> MySQL
А вот не надо SQL базы пихать везде.
Под специфическую задачу - специфическую бд.

romgermanПостоялецwww12 фев. 201818:37#5
-=MASTER=-
> можно работать параллельно с каждым файлом из разных потоков/процессов, чего
> нельзя делать в случае того же MySQL
Неужели?

Правка: 12 фев. 2018 18:38

skalogryzУчастникwww12 фев. 201818:41#6
kipar
> как транзакции организовывать?
-=MASTER=-
> Почему люди не используют файловую систему в качестве базы данных?
svn-же.
svn файлово ориентирован, в отличии, от git, который "изменения ориентированный". (в svn-е можно хранить пустую директорию, в git-е нельзя) 
ну и транзакции есть.

(а ещё svn исползьует sqllite xD)

Правка: 12 фев. 2018 18:43

-=MASTER=-Постоялецwww12 фев. 201818:45#7
kipar
> как транзакции организовывать?
> Как поиск делать - перебором всех записей?
да как...как, в память грузишь индексы, имена файлов или ещё какую-то мета инфу, её сортируешь как хочешь и по ней ищешь. Если памяти много, можешь хоть все файлы в память грузануть...
0iStalker
> Подвох в том, что БД не только хранит, но и позволяет искать с помощью языка
> запросов (а с помощью индексов, искать быстро), а у FS только FindFirst и
> FindNext
опять же, загрузил мета инфу каждого файла в память, ну там id, имя, хз что там, название документа, какие-то другие данные... сортируешь по любому ключу и ищешь бинарным поиском что надо.
ZonoID
> Что мешает организовать записи необходимым образом и пометить индексами?
в данном случае я даже соглашусь с зонойдом
romgerman
> Неужели?
скажу честно, я не знаю как работает контроллер хардов, но что-то мне подсказывает, что он на ура справится с чтением хреновой тонны файлов в условно параллельном режиме, в отличии от обычной БД, где у тебя многопоточный доступ к монолитному файлу или блоку памяти возможен только через мьютексы
kiparПостоялецwww12 фев. 201818:47#8
-=MASTER=-
> да как...как, в память грузишь индексы, имена файлов или ещё какую-то мета
> инфу, её сортируешь как хочешь и по ней ищешь. Если памяти много, можешь хоть
> все файлы в память грузануть...
ну и получается та же база данных. Все равно с этой структурой в памяти разные потоки работать не смогут (точнее читать смогут, но ее же еще и обновлять надо).
0iStalkerМодераторwww12 фев. 201818:48#9
ZonoID
> Что мешает организовать записи необходимым образом и пометить индексами?
-=MASTER=-
> опять же, загрузил мета инфу каждого файла в память, ну там id, имя, хз что
> там, название документа, какие-то другие данные... сортируешь по любому ключу и
> ищешь бинарным поиском что надо.

А зачем писать ещё раз то, что уже написано и многократно проверено десятками и сотнями тысяч разработчиков? Ну разве что сидишь в НИИ на гос. финансировании и лишнего времени вагон.

-=MASTER=-Постоялецwww12 фев. 201819:05#10
0iStalker
> А зачем писать ещё раз то, что уже написано и многократно проверено десятками и
> сотнями тысяч разработчиков?
в общем у меня просто задача другая и с этого и надо было начать :) В моей задаче поиск по базе - крайне редкий случай, обычно, в системе просто висят тысячи различных нод графа, между которыми летают сообщения и при изменении каких-то свойств, нода их стримит на хард. Какие-то ноды в одном и том же потоке, какие-то в разных, но! если у каждой ноды есть свой отдельный файл, то на потоки ей вообще плевать, они просто независимо пишут каждая в свой файл свои данные для сохранности и на других не смотрит...  С обычной БД в моём случае наверное бы такого независимого сохранения своих свойств на хард не получилось бы...

Правка: 12 фев. 2018 19:07

zlosУдалёнwww12 фев. 201819:25#11
Если базу полагается только читать в рантайме - то держать в миллионе файлов правильно с точки зрения контроля версий. В релизе собирать с оптимизацией под запросы.
exchgПостоялецwww12 фев. 201820:11#12
-=MASTER=-
> Почему люди не используют файловую систему в качестве базы данных?
git ?

kipar
> как транзакции организовывать?
https://gamedev.ru/code/forum/?id=225936

Правка: 12 фев. 2018 20:20

beejahПостоялецwww12 фев. 201821:28#13
-=MASTER=-
> но что-то мне подсказывает, что он на ура справится с чтением хреновой тонны
> файлов в условно параллельном режиме, в отличии от обычной БД, где у тебя
> многопоточный доступ к монолитному файлу или блоку памяти возможен только через
> мьютексы
Изображение
-=MASTER=-Постоялецwww12 фев. 201822:41#14
beejah, ты клон ронико что ли, картинками общаешься, поясни свою мысль хоть )
Страницы: 1 2 3 4 5 6 7 Следующая »

/ Форум / Флейм / Программирование

2001—2018 © GameDev.ru — Разработка игр