Видео смотреть бесплатно

Смотреть 2022 видео

Официальный сайт graffitistudio 24/7/365

Смотреть видео бесплатно

21.05.10 18:44 kstep

Мой OpenSource проектFusqlFS — файловая система для администрирования СУБД PostgreSQL (а дальше — больше)

Когда-то давным-давно появилась у меня идея сделать так, чтобы можно было монтировать базу данных в файловую систему и видеть все таблицы, индексы, юзеров и прочие артефакты как файлы.
Сначала я попытался найти подобный fuse-демон в сети, но аналогов не было видно нигде, несмотря на идею, лежащую на поверхности.
Начал я тогда писать на Си, понял, что писать буду долго, и взялся за Перл... Тогда я написал на коленке достаточно простую обвязку для монтирования MySQL.

Ну люблю я перл, люблю. Любителям спрашивать «А почему не питон?» дарю встречный вопрос: «А почему не перл?»


С тех пор прошло много времени. Я вырос и набрался опыта. И вот недавно решил перебрать свои исходники. В тайных закромах нашёл свою древнюю поделку. Сначала обрадовался. А потом ужаснулся, глядя на непонятную горку кода, модифицировать которую почти невозможно. В итоге переписал всё практически с нуля, полностью переработав концепцию.

Так что лежит сейчас проект на гитхабе. Прошу любить и жаловать!
(По крайней мере там основная относительно стабильная ветка, которую я хочу показать общественности.)


Сейчас реализована работа с PostgreSQL, потому что именно с ней я имею дело больше всего, но и MySQL в моём ближайшем TODO-листе.

Сейчас есть возможность:
  • Смотреть, создавать и удалять таблицы как простые каталоги,
  • Смотреть, создавать, удалять и править поля, индексы и записи в таблицах как файлы и каталоги,
  • Смотреть констрейнты в таблицах (пока только смотреть, правка в процессе реализации),
  • Смотреть, создавать и удалять роли и последовательности,
  • Смотреть и удалять представления (правка ещё не оттестирована и не доделана),
  • Делать произвольные запросы, записывая их в особые файлы.

Данные могут быть представлены в форматах YAML, JSON или XML (YAML по-умолчанию).

Статус приложения — альфа, находится в активной разработке. Использовать на свой страх и риск (хотя я сейчас ею активно админю постгресные таблички на своей девелоперской копии БД на основной своей работе). Любые багрепорты приветствуются.

Репозиторий на гихабе: http://github.com/kstep/fusqlfs.
Баги пока можно писать в тот же багтрекер, потом может поставлю себе что получше если понадобится.

Справка на гитхабе же висит. Здесь примеры для разогрева =)

Установка и запуск

Требуемые перлоыве модули (см. CPAN): Fuse, YAML::Tiny/JSON::Syck/XML::Simple (хотя бы один из них, желательно первый), Carp, DBI, DBD::Pg.

1
2
3
4
5
6

$ git clone git://github.com/kstep/fusqlfs.git fusqlfs
$ cd fusqlfs
$ mkdir mnt
$ ./fusqlfs.pl -u postgres -e PgSQL -p pa$sw0rd --nodaemon dbname ./mnt
 


Использование

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

$ cd mnt
$ ls -lhF
итого 0
dr-xr-xr-x  3 kstep kstep 0 Май 21 12:44 queries/
dr-xr-xr-x  9 kstep kstep 0 Май 21 12:44 roles/
dr-xr-xr-x 74 kstep kstep 0 Май 21 12:44 sequences/
dr-xr-xr-x 76 kstep kstep 0 Май 21 12:44 tables/
dr-xr-xr-x  3 kstep kstep 0 Май 21 12:44 views/
$ ls -lhF tables
итого 0
drwxr-xr-x 7 kstep kstep 0 Май 21 12:44 blog_entries/
drwxr-xr-x 7 kstep kstep 0 Май 21 12:44 blogs/
drwxr-xr-x 7 kstep kstep 0 Май 21 12:44 communities/
drwxr-xr-x 7 kstep kstep 0 Май 21 12:44 users/
$ ls -lhF tables/users
итого 0
dr-xr-xr-x  5 kstep kstep  0 Май 21 12:44 constraints/
dr-xr-xr-x 18 kstep kstep  0 Май 21 12:44 data/
dr-xr-xr-x  3 kstep kstep  0 Май 21 12:44 indices/
lrw-r--r--  1 kstep kstep 21 Май 21 12:44 owner -> ../../roles/postgres/
dr-xr-xr-x 13 kstep kstep  0 Май 21 12:44 struct/
$ ls -lhF roles/unite_dev
итого 0
-rw-r--r-- 1 kstep kstep 125 Май 21 12:44 struct
$ cat -lhF roles/postgres/struct
---
can_login: 1
cat_update: 1
config: ~
conn_limit: '-1'
create_db: 1
create_role: 1
inherit: 1
superuser: 1
valid_until: ~
$ ls -lhF tables/users/indices
итого 0
drwxr-xr-x 7 kstep kstep 0 Май 21 12:44 users_pkey/
$ ls -lahF tables/users/indices/users_pkey
итого 0
drwxr-xr-x 7 kstep kstep  0 Май 21 12:44 ./
dr-xr-xr-x 3 kstep kstep  0 Май 21 12:44 ../
-rw-r--r-- 1 kstep kstep 56 Май 21 12:44 create.sql
lrw-r--r-- 1 kstep kstep 15 Май 21 12:44 id -> ../../struct/id
drwxr-xr-x 3 kstep kstep  0 Май 21 12:44 .order/
-rw-r--r-- 1 kstep kstep  1 Май 21 12:44 .primary
-rw-r--r-- 1 kstep kstep  1 Май 21 12:44 .unique
$ mkdir tables/newtable
$ ls -lhF tables/newtable/struct
итого 0
-rw-r--r-- 1 kstep kstep 101 Май 21 12:44 id
$ cat tables/newtable/struct/id
---
default: "nextval('newtable_id_seq'::regclass)"
dimensions: 0
nullable: 0
order: 1
type: integer
 

И так далее до бесконечности...

Заметки

Версия очень-очень альфа, некоторые опции, описанные в README, не до конца отлажены или пока не реализованы.
В частности:
  • Кеширование в файлы (--cache=file) пока не отлажено, периодически падает, используйте на свой страх и риск,
  • Параметр --fnsep пока не реализован, так что будут проблемы с точками в текстовых primary key,
  • Также пока никак не влияют на работу параметры --debug и --innodb (последний просто потому, что MySQL пока не поддерживается, но будет).

Все метаданные о базе данных кешируются, так что если БД изменилась без ведома программы, то обновить кеш можно, послав этому демону сигнал USR1:
1
2
3
4
5

$ ps awwx | grep fusqlfs.pl
28692 ?        Ss     0:00 /usr/bin/perl /usr/bin/fusqlfs.pl --logfile=fusqlfs.log --cache=memory --cache-limit=20 -u postgres -e PgSQL -L 100 testdb /home/kstep/projects/self/fusqlfs/mnt
$ kill -USR1 28692
 

Если кого-то этот проект заинтересует, то мне очень нужны багрепорты. Ну и если кто патчи будет слать — милости прошу =)
Хотя тех. документации там тоже не хватает, это дело тоже в моём TODO-списке... Катастрофически не хватает времени, так что буду рад любой помощи.



digiwhite 21.05.10 21:08 # +1
Вообще не работаю с бд, но идея интересная и понравилась. Наверное это будет полезно в дальнейшем тем, кто работает с бд. Потом приделать плагины к наутилусу и дельфину И вообще будет хорошо :).
antigluk 21.05.10 21:22 # +1
а зачем плагины? и так ведь файловая система
digiwhite 21.05.10 22:29 # +0
ФС не ФС, но все же информацию то получать специфичную надо, а не какую-то общую.
antigluk 21.05.10 22:31 # +0
так суть в том, чтобы без плагинов и надстроек в файловой системе отобразить базу данных. или я не прав?
digiwhite 21.05.10 22:39 # +0
Да вроде как правы. Вообще не в курсе что там внутри у fuse, какой интерфейс она предоставляет и какой набор методов/действий надо реализовывать. Понятно что типа удалить/создать наверное не потребует никих дополнительных реализаций. А вот редактирование или еще что-то более экзотическое...
kstep 22.05.10 00:13 # +0
Всё модульно. Каждый артифакт базы данных — класс, реализующий базовые операции (создать, удалить, изменить). Над ним прослойка, транслирующая путь файловой системы в собственно класс, а над той прослойкой ещё прослойка для fuse-а.

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

Позже ещё напишу подробную доку по всем модулям и инструкцию для написания своих модулей.
karp 21.05.10 21:35 # +0
Плюс за Perl :)
sugar 22.05.10 18:29 # +1
Эх жаль пост плюсануть не могу, рейтинга на хватает =)
На за перл респект и уважуха )))
arts 22.05.10 22:16 # +0
Пока не пробовал, но, по-моему, это круто, реально круто. Приеду домой — попробую обязательно.
Harpagon 26.05.10 15:50 # +0
Прекрасная идея!
motonarola 28.06.10 09:16 # +0
Carp из списка требуемых модулей, думаю, можно убрать.
kstep 28.06.10 19:45 # +0
Он юзается местами, например в классах, реализующих разные модели кеширования.
motonarola 28.06.10 19:47 # +0
он есть по дефолту
kstep 28.06.10 20:26 # +0
Да (как часть базового дистрибутива perl), но я люблю полноту и точность =)
Таким образом в описании пакета я сразу заявляю, что собираюсь юзать. Самодокументация кода и всё такое...

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 126)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 2317 из 191 города)
            Топ пользователей Топ блогов
            welinux.ru

            Смотреть видео онлайн

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн