LINUX.ORG.RU

Современная версия CSV?

 


0

1

Добрый день.

Для изучения одного прогрессивного языка пишу примитивную реализацию SQL. На первых порах начал хранить данные в CSV, теперь ищу что-то более продвинутое, но простое.

Посоветуйте какой формат выбрать или что почитать.

P.S. Эта реализация SQL не нужна никому, кроме меня, это понятно :)

Очевидный json не очевиден? Или yaml.

anonymous ()

В любом случае придётся хранить в разных файлах (хотя бы из-за индексов). Так что сразу начинай разделять. Можешь попробовать динамическую оптимизацию - когда оптимизатор бьёт на файлы двоичную запись. Записи у тебя всё равно будут двоичными ибо иначе огромный объём данных на смешных количествах записей.

anonymous ()

Данные полнстю читаются в память при запуске этого твоего убийцы Oracle, или программа каждый раз елозит по диску (ну, по дисковому кэшу)? т.е. ормат нужен только как промежуточное хранилище или нет? Если первое то возможно json. Хотя наверное адекватный update данных будет ещё более велосипедным чем с CSV.
После долгих тридцатисекундных размышлений могу авторитетно пёрнуть в лужу заявить что на основе plain text-а вполне можно навелосипедить правдоподобную пародию на нормальный бинарный формат хранения таблиц. Если сделать фиксированный размер колонок (лишние символы забиваются пробелами) то можно получать данные из нужной ячейки просто по смещению в файле (не парся файл). Что очень полезно, при наличии индекса. И выглядеть будет примерно как олдскульный TSV

MrClon ★★★★★ ()
Ответ на: комментарий от MrClon

Так как базу данных в одиночку я никогда не напишу, то производительность меня не волнует :)

Текстовый формат хранения удобен при отладке (которой много).

На данный момент всё читается с диска.

Фиксрованная длина полей - это идея, спасибо.

lochness ()
Ответ на: комментарий от lochness

Почитай что-нибудь по проектированию СУБД. Ты удивишься сколько хороших и, в общем то, простых идей на эту тему людям уже приходило в голову

MrClon ★★★★★ ()
Ответ на: комментарий от O02eg

ТСу хочется повелосипедить, видимо в образовательных целях. SQLite в этом смысле бесполезен

MrClon ★★★★★ ()
Ответ на: комментарий от MrClon

Ммм, да, когда-нибудь надо. Как называется самая популярная книга по проектированию? Фамилия автора на «м», кажется.

lochness ()
Ответ на: комментарий от lochness

Про книгу не подскажу, эта тема никогда не была интересна мне на столько что-бы читать про неё многабукф. Кажется на Лекториуме был цикл лекций (аж в трёх версиях) про это дело. Кажется этот https://www.lektorium.tv/course/22977?id=22977

MrClon ★★★★★ ()
Ответ на: комментарий от lochness

для борьбы с экранированием при передаче информации исторически создавались форматы XML & JSON, позже, особо рьяные начали использовать эти форматы для хранения БД, а эти форматы обзавелись средствами хранения бинарной информации.

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

если хочешь получить хоть какой-то опыт разработки БД, забудь про текстовые БД и займись блочными устройствами.

anonymous ()
Ответ на: комментарий от lochness

Мой? Он был на Delphi, и не представляет особого интереса. За давностью лет не думаю что его найду. В конце концов я его выкинул и заменил на свободную библиотеку https://sourceforge.net/projects/tdbf/

German_1984 ★★ ()
Ответ на: комментарий от anonymous

если хочешь получить хоть какой-то опыт разработки БД, забудь про текстовые БД и займись блочными устройствами.

Нет, ну в принципе можно изобразить что-то похожее на нормальный формат оставаясь в рамках плайнтекста. В прод такое конечно не годиться, но just for fun можно извратиться

MrClon ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.