On 25 Aug 2007 at 10:51, Eric Bollengier wrote: > On Saturday 25 August 2007 10:31:04 you wrote: > > Hello Marc, > > > > Thanks for the information. I think this is something that is probably > > well worth the effort to put in the core Bacula code. I'm going to study > > it a bit to see how it might be organized into a project. Code like this > > might also help a lot for the simple restores that Bacula currently does by > > speeding up the retrieval. > > > > Perhaps Eric could send me the SQL that creates the tables so that I can > > see more clearly all the fields. > > Sql definitions : > > CREATE TABLE brestore_knownjobid > ( > JobId int4 NOT NULL, > CONSTRAINT brestore_knownjobid_pkey PRIMARY KEY (JobId) > ); > > CREATE TABLE brestore_pathhierarchy > ( > PathId int4 NOT NULL, > PPathId int4 NOT NULL, > CONSTRAINT brestore_pathhierarchy_pkey PRIMARY KEY (PathId) > ); > > CREATE INDEX brestore_pathhierarchy_ppathid > ON brestore_pathhierarchy (PPathId); > > CREATE TABLE brestore_pathvisibility > ( > PathId int4 NOT NULL, > JobId int4 NOT NULL, > Size int8 DEFAULT 0, -- used for statistics > Files int4 DEFAULT 0, -- used for statistics > CONSTRAINT brestore_pathvisibility_pkey PRIMARY KEY (JobId, PathId) > ); > > CREATE INDEX brestore_pathvisibility_jobid > ON brestore_pathvisibility (JobId); > > > For example, this is how we list files in a directory : > > SELECT File.FilenameId, listfiles.id, listfiles.Name, File.LStat, File.JobId > FROM > (SELECT Filename.Name, max(File.FileId) as id > FROM File, Filename > WHERE File.FilenameId = Filename.FilenameId > AND Filename.Name != '' > AND File.PathId IN ( 10,20,20202,20202 ) > AND File.JobId IN ( 1,2,3,4 ) > GROUP BY Filename.Name > ORDER BY Filename.Name) AS listfiles, > File > WHERE File.FileId = listfiles.id > > I think, i will wrote a new class (something like Bvfs) which will > do basic operations like in a real filesystem. > > ch_dir(pathid) > Change current directory to pathid > ls_dirs() > List all directories in the current directory (pathid and jobid) > ls_files() > List all files in a the current directory (pathid and jobid) > up_dir() > Change to parent directory > pwd() > Get the current pathid > get_pathid(path) > Return pathid from a given path > get_root() > Get root pathid > get_all_file_versions(...) > Get all versions for a file
Can you explain the pros and cons over something like a parent-child relationship? That each, each file entry has a link to the parent directory. This would be a self referential table, with some entries being files, some being directories. This is what I use for the FreshPorts database. See http://news.freshports.org/2007/08/03/freshports-database-primer/ -- Dan Langille - http://www.langille.org/ Available for hire: http://www.freebsddiary.org/dan_langille.php ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Bacula-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/bacula-devel
