Видео ролики бесплатно онлайн

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

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

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

kstep 21.05.2010 18:44

Мой 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
$ 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
$ 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
$ 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-списке... Катастрофически не хватает времени, так что буду рад любой помощи.


Тэги: fuse fusqlfs perl postgresql sql
+ 28 -
Похожие Поделиться

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

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

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

В хорошем качестве hd видео

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


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

Online video HD

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

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

Full HD video online

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

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

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