Summary | Remove all DataTree usage |
Queue | Horde Framework Packages |
Queue Version | HEAD |
Type | Enhancement |
State | Resolved |
Priority | 2. Medium |
Owners | Horde Developers (at) |
Requester | luc.germain (at) usherbrooke (dot) ca |
Created | 11/25/2005 (7166 days ago) |
Due | |
Updated | 12/17/2013 (4222 days ago) |
Assigned | |
Resolved | 11/13/2013 (4256 days ago) |
Milestone | |
Patch | No |
commit 0e95470023c9add22070504690173a1f4d009349
Author: Michael M Slusarz <slusarz@horde.org>
Date: Tue Nov 12 20:28:05 2013 -0700
Request #3046: No longer need DataTree packageframework/DataTree/composer.json | 25 --
framework/DataTree/doc/Horde/DataTree/COPYING | 458
-------------------------
framework/DataTree/package.xml | 94 -----
3 files changed, 0 insertions(+), 577 deletions(-)
http://git.horde.org/horde-git/-/commit/0e95470023c9add22070504690173a1f4d009349
commit 00641d0bd849e2e4874205083b62c08634ac0d98
Author: Michael M Slusarz <slusarz@horde.org>
Date: Tue Nov 12 20:28:05 2013 -0700
Request #3046: No longer need DataTree packageframework/DataTree/composer.json | 25 --
framework/DataTree/doc/Horde/DataTree/COPYING | 458
-------------------------
framework/DataTree/package.xml | 94 -----
3 files changed, 0 insertions(+), 577 deletions(-)
http://git.horde.org/horde-git/-/commit/00641d0bd849e2e4874205083b62c08634ac0d98
commit f4e74132cd43b577c4db9243e5974742f534a893
Author: Michael M Slusarz <slusarz@horde.org>
Date: Tue Nov 12 20:28:05 2013 -0700
Request #3046: No longer need DataTree packageframework/DataTree/composer.json | 25 --
framework/DataTree/doc/Horde/DataTree/COPYING | 458
-------------------------
framework/DataTree/package.xml | 94 -----
3 files changed, 0 insertions(+), 577 deletions(-)
http://git.horde.org/horde-git/-/commit/f4e74132cd43b577c4db9243e5974742f534a893
commit 5cde334a8ad7529bb0e877ba814708431740fedf
Author: Michael M Slusarz <slusarz@horde.org>
Date: Tue Nov 12 20:28:05 2013 -0700
Request #3046: No longer need DataTree packageframework/DataTree/composer.json | 25 --
framework/DataTree/doc/Horde/DataTree/COPYING | 458
-------------------------
framework/DataTree/package.xml | 94 -----
3 files changed, 0 insertions(+), 577 deletions(-)
http://git.horde.org/horde-git/-/commit/5cde334a8ad7529bb0e877ba814708431740fedf
State ⇒ Resolved
Milestone ⇒
commit ee0da6e1ba5ff80a794f30def8ccfe67da1d9bd4
Author: Michael M Slusarz <slusarz@horde.org>
Date: Tue Nov 12 20:28:05 2013 -0700
Request #3046: No longer need DataTree packageframework/DataTree/composer.json | 25 --
framework/DataTree/doc/Horde/DataTree/COPYING | 458
-------------------------
framework/DataTree/package.xml | 94 -----
3 files changed, 0 insertions(+), 577 deletions(-)
http://git.horde.org/horde-git/-/commit/ee0da6e1ba5ff80a794f30def8ccfe67da1d9bd4
#7161Auth_Signup
trean
... and we'll remove admin/datatree.php in Horde 4 when this is done.
State ⇒ Accepted
available) are:
Auth_Signup
admin/datatree.php (doesn't really count, but for completeness)
incubator/faq/
jonah/lib/Delivery (being deprecated once Jonah is branched)
trean
... and some assorted upgrade scripts that should be fine to break in HEAD.
still use DT is Threan bookmarsks and Horde_Auth_Signup.
Summary ⇒ Remove all DataTree usage
isn't the top priority yet - it will move up to high as soon as 3.2
and related apps are releases and Horde 4 development is begun in
earnest.
Priority ⇒ 2. Medium
Version ⇒ HEAD
horde datatree tables while using that app, like perms or groups.
State ⇒ Accepted
problems if Nag were to instantiate the Perms driver, etc...
own table (horde.shares.nag, horde.shares.kronolith), it would not
have to do the left join and generate a temporary table each time,
and it would probably better use the indexes.
tables) like this to the applications' conf.php files:
$conf['datatree']['params']['table'] = 'horde_datatree_nag';
$conf['datatree']['params']['table_attributes'] =
'horde_datatree_attributes_nag';
DataTree backend, and we need a tree structure for permissions. Also,
now that history has been moved out, permissions is (almost) the only
thing left that uses DataTree.
moving out the history would not be enough. The performance problem
with the actual permission implementation arise when there are many
users. Our database server came to a halt after about 4000 users has
logged in.
We found that these type of requests were the main performance problem:
SELECT c.datatree_id, c.datatree_name FROM horde_datatree c LEFT JOIN
horde_datatree_attributes a1 ON a1.datatree_id = c.datatree_id WHERE
c.group_uid = 'horde.shares.nag' AND ((a1.attribute_name = 'owner' AND
a1.attribute_value = 'myuserid') OR (a1.attribute_name = 'perm_users'
AND a1.attribute_key = 'myuserid' AND a1.attribute_value &
2) OR (a1.attribute_name = 'perm_creator' AND a1.attribute_value & 2) OR
(a1.attribute_name = 'perm_default' AND a1.attribute_value & 2))
GROUP BY c.datatree_id, c.datatree_name, c.datatree_order ORDER BY
c.datatree_order, c.datatree_name, c.datatree_id
When doing an "explain" on the mysql server, it shows that this
request has to evaluate each time a number of entries roughly
proportionnal to the number of users in the database (since each user
has at least one share for each type). If each type of shares had its
own table (horde.shares.nag, horde.shares.kronolith), it would not
have to do the left join and generate a temporary table each time, and
it would probably better use the indexes.
If you have another way (other than changing the database structure or
use session caching) to improve the performance of the permission
system with thousands of users, I'm all ears! Right now,we are
stucked with horde 2.2 because of this problem :(
State ⇒ Feedback
DataTree backend, and we need a tree structure for permissions. Also,
now that history has been moved out, permissions is (almost) the only
thing left that uses DataTree.
Priority ⇒ 3. High
Type ⇒ Enhancement
Summary ⇒ Move permissions data to its own table
Queue ⇒ Horde Framework Packages
State ⇒ New
slow when the user base reach many thousands users. Moving the
permission data to its own table with proper indexes would greatly
improve performance of the permission system.