On 25 Aug 2007 at 22:07, Marc Cousin wrote:
> On Saturday 25 August 2007 21:34:25 Dan Langille wrote:
> > 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/
>
> The pro is that you can get the parent or the children of a directory
> directly
> using an index. it's something you cannot do with only the path.
This is possible with a parent-child relationship. You seem to say
it is not. I think we may be referring to different things. The
table structure I am referring to is something like this:
file (id, parent_id)
where parent_id is another entry in the file table.
> this relation already exists between dirs and files (in the file table), but
> not between dirs and subdirs
In the Bacula file table as it stands now? I don't think so. This
really makes me think we are referring to two different things.
The reason I raise my questions has to do with me thinking we don't
need additional tables. Just additional relationships, and no need
for a cron job to update tables.
--
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