[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: В каком виде хранятся данные?
Страницы: 1, 2
Splaer
Доброго времени суток.

Возьмем, допустим, мускул.

Я так полагаю, что при запуске, он грузит всю базу в оперативку и дальше с ней выполняются какие-то действия, - чтение, запись, удаление...
Или он подгружает какую-то часть базы в зависимости от запроса ?
Это важно, но больше меня интересует другое - в каком виде хранятся данные на диске и если все висит в оперативке, то как часто измененные данные перезаписываются на диск ? Либо же если база подгружает в оперативку нужные куски, то за счет чего обеспечивается скорость поиска по файловой системе и в самом файле ?

Я предполагаю, что там xml и база бегает по фалу известными заранее смещениями, но в таком случае нужны еще файлы, которые будут хранить сами смещения.

С чего собственно интерес к устройству бд - во-первых просто интересно с чем постоянно работаю, во-вторых, я на днях копался с С++ и пришлось озаботиться скоростью поиска по двусвязным спискам, ну и одно за другое, пришла идея реализации бд фиксированной архитектуры, но вроде как довольно шустрой. Эдакий велосипедик biggrin.gif

Просветите пожалуйста!
Valick
Цитата (Splaer @ 21.01.2015 - 14:19)
Эдакий велосипедик

вы шутите? задавая подобные вопросы, вы хотите написать свою БД?
Если хотите знать как устроена MySQL, то пишите письмо в Oracle
если нужна не реляционная БД, то может редиска поможет https://ru.wikipedia.org/wiki/Redis

Цитата (Splaer @ 21.01.2015 - 14:19)
но больше меня интересует другое - в каком виде хранятся данные на диске

не поверите 0 и 1 biggrin.gif

_____________
Стимулятор ~yoomoney - 41001303250491
Michael
Цитата
Я так полагаю, что при запуске, он грузит всю базу в оперативку и дальше с ней выполняются какие-то действия, - чтение, запись, удаление...

нет

_____________
There never was a struggle in the soul of a good man that was not hard
Миша
Цитата (Valick @ 21.01.2015 - 15:40)

не поверите 0 и 1 biggrin.gif

Насмешил)) laugh.gif

_____________
Принимаю заказы, писать в ЛС
Splaer
Цитата (Valick @ 21.01.2015 - 13:40)
вы шутите? задавая подобные вопросы, вы хотите написать свою БД?


Не задавая вопросов, нельзя получить ответы.
Я хочу попробовать! И я не утверждаю, что это будет непревзойденная БД невиданной красоты. Не получится - да и хрен с ним, но попробовать надо, к тому же, мне просто интересно проверить алгоритмы, которые я наколдовал smile.gif Но хочется понять принципы хранения данных, а не просто в текстовый документ записать )
mvg
Найти файл с БД открыть его например с помощью vim. В СУБД MySQL есть типы таблиц и в зависимости от типа выбирается место хранения данных (оперативка, диск). Таблица InnoDb есть физический файл на диске. Таблице Memmory, как не трудно догадаться, храниться в памяти. MyIssam на диске и т.п. Ваще для начала надо немного ознакомиться с теорией БД, а потом с теорией СУБД. Потом поюзать, подергать, примеры того что писать собрались то. Ну а потом можно и дерзать, если стремление не пропадет.

Но кроме двусвязных списков в СУБД реализованы такие базовые алгоритмы как очереди и деревья! Может пока в их сторону посмотреть! Ну до тех пор пока не изучили что такое есть СУБД. Но если речь идет о простенькой БД то почему бы и не реализовать ее. Все в институте делали простенькие БД основанные на текстовых файлах естественно похожих на тотже MySQL как Амеба похожа не человека, но все таки! Прежде чем программисту переходить к теории БД, надо попробовать пару файликов связать системой управления smile.gif.
Splaer
Цитата (mvg @ 21.01.2015 - 13:58)
Но кроме двусвязных списков в СУБД реализованы такие базовые алгоритмы как очереди и деревья!


Да, моя "версия" тоже не ограничивается только списками, там и динамические массивы, и различные форматы разбиения данных для ускорения поиска...

Цитата (mvg @ 21.01.2015 - 13:58)

Но если речь идет о простенькой БД то почему бы и не реализовать ее. Все в институте делали простенькие БД основанные на текстовых файлах естественно похожих на тотже MySQL как Амеба похожа не человека, но все таки! Прежде чем программисту переходить к теории БД, надо попробовать пару файликов связать системой управления smile.gif.


Вот об этом и идет речь, спасибо ! Но простое хранение различных структур в файлах + редактирование/удаление/добавление я делал давным давно (всякие телефонные справочники и прочее), хочется пойти дальше smile.gif
Вот и интересуюсь как это все грамотно хранится на диске?
Valick
Цитата (Splaer @ 21.01.2015 - 14:57)
Не задавая вопросов, нельзя получить ответы.

вам не один десяток книг по полторы тысячи страниц прочитать нужно, перед тем как браться за реализацию своей БД smile.gif

_____________
Стимулятор ~yoomoney - 41001303250491
Splaer
Цитата (Valick @ 21.01.2015 - 14:08)

вам не один десяток книг по полторы тысячи страниц прочитать нужно, перед тем как браться за реализацию своей БД smile.gif


Спору нет. Для реализации серьезной, конкурентной БД - конечно!

Но тут речь о :

Цитата

Но если речь идет о простенькой БД то почему бы и не реализовать ее.
Valick
тогда хотя бы одну smile.gif
я серьёзно, это не для форума тема, по крайней мере не для РНР ориентированного форума

_____________
Стимулятор ~yoomoney - 41001303250491
Splaer
Цитата (Valick @ 21.01.2015 - 14:20)
по крайней мере не для РНР ориентированного форума

Вот тут, возможно, Вы правы...
Хотя, насколько я знаю, тут есть люди с довольно широкими познаниями, не ограниченными PHP.

Ну посмотрим, может кто-то опишет базовые принципы хранения.
S.Chushkin
Цитата (Splaer @ 21.01.2015 - 16:24)
Ну посмотрим, может кто-то опишет базовые принципы хранения.
...я на днях копался с С++

Берёте исходники и смотрите. В чём проблема?

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
T1grOK
Цитата (Valick @ 21.01.2015 - 12:08)
вам не один десяток книг по полторы тысячи страниц прочитать нужно, перед тем как браться за реализацию своей БД

Ничего подобного. В основе лежат элементарные вещи.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
sergeiss
"Я вам не скажу за всю Одессу..." (с). Точнее, не скажу про все БД. Но в большинстве из них структура данных очень и очень простая. Например, есть целое поле id (4 байта) и name типа varchar(100). Под одну запись будет зарезервировано ровно 104 байт. Под 2 записи 208 байт и т.д. Аналогично для многих других полей, у которых фиксированная длина.
Для поля типа text будет зарезервировано несколько байт, для указания на отдельный файл, где будет храниться собственно текст. Ну и так далее smile.gif

А вот дальше начинаются "навороты". Например то, что записи могут идти в файле не подряд, а с промежутками. Потому что при апдейте создается новая запись, индекс указывает на новую запись. Также создаются собственно индексы.

Дальше на всё это наворачиваются алгоритмы оптимальной выборки... И пошло-поехало.

Цитата (Splaer @ 21.01.2015 - 16:08)
Но простое хранение различных структур в файлах + редактирование/удаление/добавление я делал давным давно (всякие телефонные справочники и прочее), хочется пойти дальше

А выборки из них, типа SELECT с разными "опциями" типа WHERE, GROUP BY, ORDER BY, LIMIT и других тоже делал?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Splaer
Цитата (sergeiss @ 21.01.2015 - 17:52)
"Я вам не скажу за всю Одессу..." (с).

За Одессу не надо, я как раз в ней живу smile.gif

Цитата
...Под одну запись будет зарезервировано ровно 104 байт. Под 2 записи 208 байт и т.д. Аналогично для многих других полей, у которых фиксированная длина.
Для поля типа text будет зарезервировано....

Т.е. это просто бинарный файл в который записываются данные в порядке построения полей ?
Я думал, там какая-то специфическая форма хранения...

Цитата
А выборки из них, типа SELECT с разными "опциями" типа WHERE, GROUP BY, ORDER BY, LIMIT и других тоже делал?


Делать запросы выборок там нельзя было, функционал был примерно таким:
Вывод всех контактов (LIMIT был ограничен заранее)
Добавление
Удаление
Редактирование
Поиск по имени, по номеру телефона, по части имени или номера телефона...
Сортировки
Ну и работа с файлами, разумеется.

Обычная учебная задачка. Но там в оперативку грузилось все, что было и в последствии переписывался файл с изменениями (если таковые были). А если база будет весить, скажем, 100 ГБ - получается беда.

Есть следующие мысли:
Возьмем, к примеру, таблицу с логинами и паролями. Начать с алфавитного разбиения по файлам и подгружать необходимое в зависимости от запроса. Так же, думаю, для ускорения, можно сделать некоторое деление по длине самого логина и так далее.
Подобный подход позволит сделать вполне шуструю программную часть обрабатывающую уже подгруженный файл:
Подгрузили файл "А" -> массив (по длинам логинов) указателей на списки.
Т.е.
[5 символов] -> список пар
[6 символов] -> список пар
....
[200 символов] -> список пар

По крайней мере мне так видится, пока что )
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.