Forum Discussion

AndrewPatricio1's avatar
AndrewPatricio1
Qrew Member
12 months ago

cross-app relationships and performance

Hello,

I've been using QB for 15+ years.   About 12 years ago I was working for an organization that made heavy use of QB.  We had the idea to have a central hub of our core data that would feed to other team apps via cross app relationships.   It was something like 10 apps connected to that central data hub app.   When we did this, all the apps slowed to a crawl.  Literally minutes to respond to clicks etc.   We contacted technical support and they told us that each app runs on a single thread on a server and when you use a cross-app relationship, all the apps tied together like that run on that same single thread.   

Where I am now we are potentially looking to do something similar and I figured that 12 years later we hopefully wouldn't have the same issue.   However, when I checked with tech support they said that though the engineers have made performance tweaks to the cross-app relationships, apps still run on a single thread.   Don't know if that means that all the tied together apps run on that thread or just each app.

So my question is does anyone here run a lot of cross-app relationships, especially in this kind of central core data app, and if so do you see any performance issues?   A cross app relationship would be easier but if it's going to degrade performance I'm likely going to just use a pipeline or external script to update the child tables instead of an actual relationship.

thanks!

Andrew



------------------------------
Andrew Patricio
------------------------------

3 Replies

  • If you cause apps to be in a single process, then you deny yourself to have multiple threads,  running on multiple virtual servers. 


    But performance will depend on how many concurrent users and the complexity and amount of data in the apps. 


    If you expect to have a lot of users and a lot  of apps (12 is a lot) then if you avoid binding them together in one process try hard. My preference is sync tables. If you can possible live with the hourly refresh cycle. 



    ------------------------------
    Mark Shnier (Your Quickbase Coach)
    mark.shnier@gmail.com
    ------------------------------
  • Hey Andrew,

    I don't think you'll find a single best practice in this case, as it'll depends on the complexity and request volume of your apps.

    With that being said, we recently had major performance issues with a few cross-app relationships to the point we had to refactor and cut the relationships. We've worked with QB escalated Support to come to that decision for our use case after review and implementing many performance best practices.

    When one user performed a slow action, unfortunately all our Users will wait in line … this includes bottlenecking API requests which led to script timeouts. One example is simply opening a larger app in the relationship that hasn't been accessed for awhile which requires time to load into memory.

    Although, on the flip-side, I've seen cross-app relationships work well for less complex apps having fewer requests.

    In my experience, even when you've followed best practices, record volume (over ~ 1 million) is the biggest performance offender. And formula queries.

    Anyway, I'd try to avoid cross-app relationships whenever possible! But don't take my word for it, I suggest reaching out to Customer support for your specific app(s) after reviewing performance best practices. Use performance analysis tools, blogs posts and Empower presentations to help keep your apps running smoothly.



    ------------------------------
    Brian Seymour
    ------------------------------
  • I've decided to use App 'Clusters' and that is working pretty well. We have a corporate business line that has a lot of the main information like employee info, financial data, etc. Then I have sub business lines that have their own 'clusters' for project management etc. These clusters use cross app relationships, but I only sync tables from the Corporate App. Thus, each cluster is separate from each other. So far, so good. You may be able to implement something like that?

    Just be careful, you have to be very intentional to not accidentally link the apps. Even a report link from one app to another, or a multi select shared field can suddenly link them and share resources.



    ------------------------------
    Mike Tamoush
    ------------------------------