Date: Sun, 19 Feb 2006 15:53:25 +0200 From: Kyryll A Mirnenko aka Mirya <mirya@matrix.ua> To: freebsd-fs@freebsd.org Subject: RDBMS features into VFS Message-ID: <200602191553.26338.mirya@matrix.ua>
next in thread | raw e-mail | index | archive | help
Consider this a feature request. THE PROBLEM The userland is missing "ORDER BY" and "LIMIT"-like features for directory reading. E.g. The only avaliable API is readdir() interating over the directory in unspecified order. On other hand most filebrowsers utilize file sorting extensively (mc, for, ex, will sort files by name as default option). When working with large directories this slowdowns operation much - e.g. the filebrowser must read huge filelist, then sort it and output only a small part of it - despite the fact some FS have BTREE index for filenames. Other potentional candidates for sorting are: - mtime - size - extattrs THE SOLUTION Add an api into VFS layer allowing to fetch a sorted filelist and limiting the output to a range from N to M, like it does "SELECT ... FROM ... ORDER BY field LIMIT a, b" in MySQL notation. Underlying FS'es are allowed not to add any optimized API for this operation, if so VFS implements it by itself THE USE Someone may criticise the exaple above as huge directories in REAL fs are exception, but the main application comes when talking about syntetic FS. After fusefs was ported to FreeBSD it became possible to represent some business logic as filesystem and "merge" it into the real one w/o digging in the kernel and thinking much about how a bug in your code can make the whole system crash. FS interface allows programmers not to care much about the user iface as the user is free to use any HTML editor he/she prefers to edit a piece of data provided by an application - reading and writing will be forwardrd to aprop. backend via fuse. The issue is most virtual "directories" in such systems will contain hundred thousand of "files" (like customers table) so while underlying RDBMS can effectively sort (the fields not representing standart file attributes are mapped to extattr) and chunk the data, the fs layer is not aware about that. -- Regards, Mirya ICQ #313898202
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200602191553.26338.mirya>