+1 On Tue, Feb 26, 2019 at 12:03 PM Simon Urli <simon.u...@xwiki.com> wrote: > > Hi everyone, > > we currently have some issues when performing refactoring operations on > pages that are linked from another wiki page. See: > https://jira.xwiki.org/browse/XWIKI-8346 > > The current implementation of the links is to keep the local name of the > current document and to create a reference containing the name of the > wiki for the target document, only if it's a document from another wiki. > So basically if I have a wiki:A pointing to subwiki:B, I will get a link > stored in DB of "wiki", containing: > - fullName: A > - link: subwiki:B > > This forces us to currently iterate over all wikis, when we refactor a > page to edit all the links on the farm. That's why we currently have an > option which is disabled by default: i.e. we don't update backlinks on a > farm by default. > > In order to allow such operation with less performance issues, I propose > to add a new table dedicated to store the backlinks: basically this > table would store the reversed information as Links, in the target DB. > > If I take back my example, the table backlinks of "wiki" would be empty, > and I get in the table backlinks of "subwiki", the following information: > - fullName: B > - backlink: wiki:A > > Then we could load all backlinks of a document just by looking in one > table. > The impact on performance would be the necessity to update links in two > tables when performing a save, but we can mitigate this by first loading > the links so we only update what needs to be (currently we delete and > recreate all links, each time...). > > IMO it would really ease the understanding of links and backlinks, solve > the issues on farm and help us to maintain this code. + it doesn't break > any legacy since we keep the existing Link table. > > WDYT? > > Simon > -- > Simon Urli > Software Engineer at XWiki SAS > simon.u...@xwiki.com > More about us at http://www.xwiki.com
-- Thomas Mortagne