Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 Файловая система в качестве БД.  [new]
oraweb
Member

Откуда: Москва
Сообщений: 228
Возможно, мои мысли покажутся странными, сумбурными, тем не менее, попытаюсь изложить свою идею, возможно, найду понимание.
Что если подружить SQL c файловой системой напрямую, минуя всяких посредников в виде БД
Примерно так:
Если Linux:
SELECT * FROM /
Получаем:
/..
/.automount
/bin
/boot
/dev
/etc
/home
и т.д.
Думается, что такая "база" даст любой промышл. фору и уделает ее с потрохами по всем показателям.
Таким образом, вся поддержка базы отпадает, достаточно хорошо знать файловую систему, полномочия польз., резервирование, стандарт SQL и драйвер стыкующий FS с SQL.

Если что-то похожее уже имеется, дайте ссылку.
13 апр 06, 00:53    [2556087]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
Пьяный Лох
Member

Откуда:
Сообщений: 3652
Любая книжка по OLEDB содержит какой-нить пример типа "а теперь давайте построем оледиби провайдера поверх NTFS".

WinFS (когда появится) вообще на Юконе обещался быть.

SQL уже с чем только не подружили. И еще подружат не раз.
Новизны в идее не чувствуется...

З.Ы.
Был в своё время шокирован таким примером на VB (не про файловую систему, но все же):
Пристрелить freecell на машине GAMER
SET WMI = GetObject("winmgmts:\\GAMER")

SET objs = WMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name='freecell.exe'")
FOR EACH obj IN objs
   obj.Terminate(0)
NEXT
13 апр 06, 01:03    [2556096]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
oraweb
Возможно, мои мысли покажутся странными, сумбурными, тем не менее, попытаюсь изложить свою идею, возможно, найду понимание.
Что если подружить SQL c файловой системой напрямую, минуя всяких посредников в виде БД
Примерно так:
Если Linux:
SELECT * FROM /
Получаем:
/..
/.automount
/bin
/boot
/dev
/etc
/home
и т.д.
Думается, что такая "база" даст любой промышл. фору и уделает ее с потрохами по всем показателям.
Таким образом, вся поддержка базы отпадает, достаточно хорошо знать файловую систему, полномочия польз., резервирование, стандарт SQL и драйвер стыкующий FS с SQL.

Если что-то похожее уже имеется, дайте ссылку.

Теперь свой собственный internet-ресторан может открыть любой желающий!


Как на счет рекурсии?
13 апр 06, 10:23    [2556704]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
pgres
Member

Откуда: Харьков
Сообщений: 140
Да лажевая идея.
В любой субд disk IO работает слегка не так как в файловой системе так что насчет уделывания есть большие сомнения.
13 апр 06, 10:29    [2556741]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
AlexTheRaven
Member

Откуда: Москва
Сообщений: 879
По-моему, задача ФС - хранение плохо структурированной информации. Задача СУБД - хранение хорошо структурированной.

Обычно у ФС значительно меньше функций, чем у СУБД. Если пойти путём реализации этих функций для ФС - она начнёт превращаться в СУБД (путь WinFS). Вы уверены, что хотите стать вторым Эллисоном или Шуклиным?

С другой стороны, у многих функций ФС по работе с информацией на низком уровне нет аналогов в СУБД. Вы уверены, что рационально расширять ими SQL?

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

Я аналогов не видел. Знаю, что есть VxFS (JFS), которая "снаружи" выглядит как ФС, а "изнутри" сильно напоминает СУБД, потому обладает большой надёжностью и быстродействием.
13 апр 06, 10:44    [2556822]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Впринципе, если в любую СУБД встроить пару табличных функций, для доступа к файловой системе напрямую - было бы неплохо (иногда). Однако это такая дыра в системе безопасности что просто п-ц.
13 апр 06, 10:49    [2556861]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
oraweb

Что если подружить SQL c файловой системой напрямую, минуя всяких посредников в виде БД

Думается, что такая "база" даст любой промышл. фору и уделает ее с потрохами по всем показателям.
Таким образом, вся поддержка базы отпадает, достаточно хорошо знать файловую систему, полномочия польз., резервирование, стандарт SQL и драйвер стыкующий FS с SQL.



Файловые системы (БД без СУБД) - с этого все начиналось. Это отбрасывает в 60 годы. Т.е. идея старая, до того как допрели что нуны посредники (т.е. пришли к идее СУБД), по-моему, када НАСА лобал какой космический проект.
Кроме того, такие системы и сейчас есть - это все допотпные системы. Мож там нет SQL, но есть, например, МУМПС.
Так шо это не идея вообще, а план по деградации матобеспечения ИС.
13 апр 06, 11:17    [2557031]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
oraweb
Member

Откуда: Москва
Сообщений: 228
Этот вопрос возник в связи с проблемами хранения двоичных файлов в БД. Что лучше: картинка ~>100 Кб на диске или в базе? У кого-то уже давно есть однозначный ответ, но найдется немало противников решения это задачи в том или ином виде.
Вопрос структурирования можно решить осмысленным наименованием папок, которые выполняют функцию таблиц. В каждой папке-таблице имеются свои папки-поля(столбцы). В корне каждой папки-таблицы поместить текстовый файл, где построчно описывается структура папок-столбцов. Таким образом, можно хранить текстовые фалы в одной папке, картинки в другой и т.д. Если необходима индексация, то ее решать также размещением текстового фала в корне таблицы-папки. Таким образом при необходимости параллельно выполняется удаление, обновление, запись во всех папках и индексном фале.
Безопасностью занимается сама операционка, например, линукс с этой задачей неплохо справляется.
Применение: веб-странички с динамическим содержанием, где информацию удобнее хранить в файлах с уже готовым форматированием-оформлением +двоичные файлы - картинки там всякие архивы и пр.
Я в принципе не настаиваю. Мое дело предложить. Чем больше критики, тем лучше.
Более компетентно по данному вопросу может высказаться спец линуха
13 апр 06, 11:47    [2557255]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
MX -- ALEX
Guest
oraweb
Этот вопрос возник в связи с проблемами хранения двоичных файлов в БД. Что лучше: картинка ~>100 Кб на диске или в базе? У кого-то уже давно есть однозначный ответ, но найдется немало противников решения это задачи в том или ином виде.
Вопрос структурирования можно решить осмысленным наименованием папок, которые выполняют функцию таблиц. В каждой папке-таблице имеются свои папки-поля(столбцы). В корне каждой папки-таблицы поместить текстовый файл, где построчно описывается структура папок-столбцов. Таким образом, можно хранить текстовые фалы в одной папке, картинки в другой и т.д. Если необходима индексация, то ее решать также размещением текстового фала в корне таблицы-папки. Таким образом при необходимости параллельно выполняется удаление, обновление, запись во всех папках и индексном фале.
Безопасностью занимается сама операционка, например, линукс с этой задачей неплохо справляется.
Применение: веб-странички с динамическим содержанием, где информацию удобнее хранить в файлах с уже готовым форматированием-оформлением +двоичные файлы - картинки там всякие архивы и пр.
Я в принципе не настаиваю. Мое дело предложить. Чем больше критики, тем лучше.
Более компетентно по данному вопросу может высказаться спец линуха



-медленно будет крутится
-многопользовательский доступ - как блокировать-разблокировать ?
-все сразу или несколько - как открыть ?

можно конечно как то приспособиться..
но хочется вначале все скинуть в
базу - например MUMPS и там работать
в конце работы все опять раскидать по папкам
(кроме картинок)

то есть организующим звеном является древовидный MUMPS
нечто подобное реализовано у нас в кадрах-зарплате
3000 фото лежат в файлах с именами=таб.номерам
база их выдергивает как понадобятся и выдает на экраны
13 апр 06, 15:19    [2558997]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
Nikolay Kulikov
Member

Откуда: Москва
Сообщений: 607
AS/400. Пример где можно работать с файлом как с таблицей и как с файлом и наооборот.
13 апр 06, 20:57    [2560874]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
MX -- ALEX

базу - например MUMPS и там работать
в конце работы все опять раскидать по папкам

Хорошо шо есть Оракл, чтобы не знать всего этого гемора никогда.
13 апр 06, 23:17    [2561262]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
oraweb
Member

Откуда: Москва
Сообщений: 228
Если не нравится идея с базой в виде файловой системы, то можно просто нарастить shell дополнительными возможностями написания команд в стиле SQL.
Примерно так
SELECT * FROM /home/user WHERE flag=l
Что равносильно ls -l /home/user
А потом при необходимости комбинировать shell-selectы в стиле SQL
И потом еще…
Все современные БД это шкаф, где есть полки и на каждой полке куча ящиков. Чтобы получить необходимые предметы с нужными характеристиками, нужно знать на какой полке они хранятся, в каком ряду ящиков размещаются, и какие предметы должны лежать в этих ящиках. Упрощенно, на уровне полок, это плоская модель хранения данных. Нужно знать координаты x и y.
А в случае БД в виде ФС каждый ящик в свою очередь может быть еще и полкой, в составе которой имеются свои ящики и так фактически до предела, на сколько это позволяет ФС.
Структурирование данных в этом случае не плоское и даже не 3-х мерное, а образно говоря, шарообразное и в тоже время упорядоченное.
Впрочем, чтобы все это понять, нужно еще иметь не плоское мышление.
14 апр 06, 12:17    [2563098]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Да, шарооборазное мыщление не всем дано :(
Полностью с Вами согласен

Вам уже сказали про AS/400 ?
14 апр 06, 14:10    [2564011]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
nik_x
Member

Откуда:
Сообщений: 1887
RMS. (VMS)
Теперешний владелец - HP
14 апр 06, 16:43    [2565076]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
oraweb

Впрочем, чтобы все это понять, нужно еще иметь не плоское мышление.

Или плоское, но 60-х годов - када файловые БД были в ходу.
14 апр 06, 16:48    [2565105]     Ответить | Цитировать Сообщить модератору
 Re: Файловая система в качестве БД.  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
Gluk (Kazan)
Вам уже сказали про AS/400 ?

Это немного не то.
На AS/400 нет вложенности каталогов (в общем смысле).
То бишь с корня ты видишь все каталоги (library)
В библиотеке могут лежать:
  • файлы (таблицы) с данными фиксированной длины.
  • индексы к ним (AKA logical views)
  • подкаталог с сырцами программ
  • подкаталог с откомпилированным кодом
  • обычный файл (в юниксовом понятии)
  • ...

    SQL доступен только для работы с первыми двумя типами данных.

    P.S.
    Я упростил, так что не пинайте, что забыл что-то ещё упомянуть.
  • 14 апр 06, 18:55    [2565737]     Ответить | Цитировать Сообщить модератору
     Re: Файловая система в качестве БД.  [new]
    Зл0й
    Member

    Откуда: Северная Калифорния
    Сообщений: 686
    БД на файлах стоились в 60х-70х годах на мэйфреймах которые поддерживают понятие "записи" на уровне ОС, даже с возможностью индексирования записей. Несколько позже появилась ОС VMS которая тоже поддерживала понятие записи, под ней был такой продукт RDB который был потом продан Ораклу. В общем данный подход обладал целым рядом существенных недостатков, в ходе устранения которых и появились современные реляционные СУБД.

    А теперь "животрепещущий пример". Есть такая бухгалтерская система кредитного отдела, называется AFS. Стоит в большинстве крупных американских банков. Поставляется с исходным кодом, каждый банк содержит свою версию. Написана как раз на Коболе путем многократного вложения записей. Вся информация в системе пишется в 4 набора данных (файла в общепринятой терминологии). Уровень вложенности записей - высокий. Банк слился с другим банком и одно из полей пришлось увеличить с 9 символов до 15. На этот проект ушло пол-года упорной работы, была переписана куча кода на Коболе. А теперь подумайте сколько времении у вас уйдет на эту операцию в вашей любимой реляционной СУБД :)
    14 апр 06, 23:58    [2566363]     Ответить | Цитировать Сообщить модератору
     Re: Mainframe-разработчик, США  [new]
    lazy-beaver
    Member

    Откуда: donetsk, UA
    Сообщений: 186
    см исходный пост - в as/400 нельзя сделать "select * from '/'" -))
    но если написать сторед-процедуру, то можно -))
    кстати. и для IFS, а не только для library-based FS

    Serge Reva
    15 апр 06, 03:35    [2566563]     Ответить | Цитировать Сообщить модератору
     Re: Файловая система в качестве БД.  [new]
    nik_x
    Member

    Откуда:
    Сообщений: 1887
    Зл0й
    БД на файлах стоились в 60х-70х годах на мэйфреймах которые поддерживают понятие "записи" на уровне ОС, даже с возможностью индексирования записей. Несколько позже появилась ОС VMS которая тоже поддерживала понятие записи, под ней был такой продукт RDB который был потом продан Ораклу. В общем данный подход обладал целым рядом существенных недостатков, в ходе устранения которых и появились современные реляционные СУБД.

    ...


    RDB юзал, или просто где-то слыхал про существование этого зверя?
    Дык вот, RDB идеологически НИЧЕМ не отличается от Oracle v7-8. Мало того, этот продукт был кросс-платформным (до того как оракуль благополучно его похоронил; скупка по оракулю - вид конкурентной борьбы), и были версии даже под MS DOS. Под VMS использовалась RMS, дык там это основная файловая система...
    Под VMS была и есть RMS (Record Management System). Есть - потому как система жива и успешно продается по сей день (описание всего барахла см. на www.hp.com)
    В основе RMS - индексный файл, т.е. система изначально строится на индексах (чего угодно) + понятие версионности...
    15 апр 06, 06:29    [2566573]     Ответить | Цитировать Сообщить модератору
     Re: Файловая система в качестве БД.  [new]
    nik_x
    Member

    Откуда:
    Сообщений: 1887
    Кстати, существуют проекты free/open VMS.
    Например:

    http://www.openvms.org/
    http://freevms.free.fr/indexGB.html (здесь фунукционал RMS еще не полностью)
    ... (гугль рулит)
    15 апр 06, 06:43    [2566580]     Ответить | Цитировать Сообщить модератору
     Re: Файловая система в качестве БД.  [new]
    oraweb
    Member

    Откуда: Москва
    Сообщений: 228
    На примере супермаркета все станет понятно.
    В супермаркете все отсортировано по группам: Продукты, Книги, Одежда и т.д. это различные отделы. Соответственно создаем таблицу отделов.
    Каждый отдел в свою очередь имеет свои секции, например: Продукты разделяются на мясные ликероводочные, кондитерские и т.д.
    Секции, на примере ликероводочной, в свою очередь делятся на вина, водку, коньяки, пиво и т.д.
    Можно еще и вина классифицировать, по различным признакам, но ограничимся тем, что есть, достаточно.
    По своей сути вся эта классификация является древовидной (раннее писал шарообразной, что не совсем удачно) и чтобы описать ее нам нужно создать кучу таблиц и привязать друг другу связками по полю ID, например.
    А в файловой системе ничего этого не потребуется. Т.к. сама ФС по своей сути древовидная. Таким образом, создаем папку supermarket, в ней папку Products, в папке Products создаем папку buhalovo, в папке buhalovo создаем папку wine и пишем:

    SELECT * FROM /home/user/supermarket/Products/buhalovo/wine

    Получаем список вин, которые продаются в супермаркете 1.
    А теперь напишите этот запрос, используя современные базы данных, если меня интересует какие вина продаются в супермаркете 2. Сколько потребуется условий WHERE чтобы объединить все таблицы? Немереное кол-во.
    А я просто напишу:

    SELECT * FROM /home/user/supermarket2/Products/buhalovo/wine

    И все.

    Любая конечная информация является листочком на дереве, но почему-то понадобилось все стволы и ветки обрубить, нарубить дрова и сделать дровяник - современные БД.
    16 апр 06, 15:42    [2568245]     Ответить | Цитировать Сообщить модератору
     Re: Файловая система в качестве БД.  [new]
    oraweb
    Member

    Откуда: Москва
    Сообщений: 228
    При этом хочу заметить, что полностью отказываться от СУБД не надо. Их уже в свою очередь имеет смысл применять в конечной стадии, т.с. на уровне листочков. Когда вина нужно дополнительно классифицировать по разным признакам - год изготовления, производитель, сухое или красное и т.д. Т.е. СУБД в обычном режиме применяем, в папке wine. На этом уровне "дровяной" подход уместен.
    16 апр 06, 16:54    [2568308]     Ответить | Цитировать Сообщить модератору
     Re: Файловая система в качестве БД.  [new]
    -------------
    Guest
    oraweb
    На примере супермаркета все станет понятно.
    В супермаркете все отсортировано по группам: Продукты, Книги, Одежда и т.д. это различные отделы. Соответственно создаем таблицу отделов.
    Каждый отдел в свою очередь имеет свои секции, например: Продукты разделяются на мясные ликероводочные, кондитерские и т.д.
    Секции, на примере ликероводочной, в свою очередь делятся на вина, водку, коньяки, пиво и т.д.
    Можно еще и вина классифицировать, по различным признакам, но ограничимся тем, что есть, достаточно.
    По своей сути вся эта классификация является древовидной (раннее писал шарообразной, что не совсем удачно) и чтобы описать ее нам нужно создать кучу таблиц и привязать друг другу связками по полю ID, например.

    на самом деле эта классификация - сферическиконевакуумная :)
    oraweb

    А в файловой системе ничего этого не потребуется. Т.к. сама ФС по своей сути древовидная. Таким образом, создаем папку supermarket, в ней папку Products, в папке Products создаем папку buhalovo, в папке buhalovo создаем папку wine и пишем:

    SELECT * FROM /home/user/supermarket/Products/buhalovo/wine

    Получаем список вин, которые продаются в супермаркете 1.
    А теперь напишите этот запрос, используя современные базы данных, если меня интересует какие вина продаются в супермаркете 2. Сколько потребуется условий WHERE чтобы объединить все таблицы? Немереное кол-во.
    А я просто напишу:

    SELECT * FROM /home/user/supermarket2/Products/buhalovo/wine


    SELECT products.* 
    FROM Products
    JOIN  Supemarkets ON (Products.market_id=Supemarkets.market_id) 
    JOIN ProductCategories ON (Products.prod_cat_id=ProductCategories.prod_cat_id) 
    JOIN ProductSubCategory ON (Products.prod_sub_cat_id=ProductSubCategory.prod_sub_cat_id)
    WHERE market_name = 'supermarket2' AND prod_cat_name = 'buhalovo' AND prod_sub_cat_name = 'wine'
    
    или же в стиле Tutorial D:
     Products SEMIJOIN (Supermarkets WHERE market_name =  'supermarket2')
    SEMIJOIN (ProductCategory WHERE prod_cat_name = 'buhalovo' )
    SEMIJOIN (ProductSubCategory WHERE  prod_sub_cat_name = 'wine')
    

    ЗЫ
    oraweb

    Любая конечная информация является листочком на дереве, но почему-то понадобилось все стволы и ветки обрубить, нарубить дрова и сделать дровяник - современные БД.


    на дворе дрова на дровах братва у братвы трава...
    а Вы где себе такую траву достаете?
    16 апр 06, 17:05    [2568317]     Ответить | Цитировать Сообщить модератору
     Re: Файловая система в качестве БД.  [new]
    Рыжий Кот
    Member

    Откуда: Мягкий Диван; [забанен] Рустамом; [разбанен] П02;
    Сообщений: 21678
    oraweb
    На примере супермаркета все станет понятно.
    В супермаркете все отсортировано по группам: Продукты, Книги, Одежда и т.д. это различные отделы. Соответственно создаем таблицу отделов.
    Каждый отдел в свою очередь имеет свои секции, например: Продукты разделяются на мясные ликероводочные, кондитерские и т.д.
    Секции, на примере ликероводочной, в свою очередь делятся на вина, водку, коньяки, пиво и т.д.
    Можно еще и вина классифицировать, по различным признакам, но ограничимся тем, что есть, достаточно.


    а если продукт относится и к ликероводочному, и к безалкогольным напиткам (например, тоник)?
    ааа понял, понял, тогда вы просто в другие папку сделаете shortcut на этот продукт... гениально...
    16 апр 06, 17:19    [2568337]     Ответить | Цитировать Сообщить модератору
     Re: Файловая система в качестве БД.  [new]
    Александр Гoлдун
    Member

    Откуда:
    Сообщений: 2290

    oraweb пишет:
    > На примере супермаркета все станет понятно.

    В первую очередь станет понятен уровень квалификации в рассматриваемом
    вопросе.

    > По своей сути вся эта классификация является древовидной (раннее писал
    > шарообразной, что не совсем удачно) и чтобы описать ее нам нужно создать
    > кучу таблиц и привязать друг другу связками по полю ID, например.

    Уж деревья то в базе - достаточно банальная задача. И дерево для
    описанной ранее задачи (и не только) можно реализовать в одной
    простейшей таблице.

    > И все.

    Учи матчасть.

    Posted via ActualForum NNTP Server 1.3

    16 апр 06, 20:27    [2568580]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
    Все форумы / Сравнение СУБД Ответить