MongoDB: Approach for storing frequently modified arrays












0















Need a piece of advice for storing a large number of references between Mongo entities that are frequently updated.



Some background:




  • 1 event can have 100-1000 logs.

  • 1 event can have 1-10 assets associated (assignment object).

  • Logs are created per asset per event.

  • Query pattern: find all logs by assignment (eventId and assetId).


Entities with their relations:



EVENT <-1--------------N-> LOG   
EVENT <-N--ASSIGNMENT--N-> ASSET


Mongo collections and documents:



event: { id, name, ... }
asset: { id, name, ... }
log: { id, eventId, metadata, ... }
assignment: { id, assetId, eventId, metadata, ... }


Here comes the question:




  • What is the best way to store associations between logs and assignments (events and assets)? Note that those associations are updated frequently and concurrently.


Approach 1



Store logIds in assignment entity:



assignment: { id, assetId, eventId, logIds, ... }


Approach 2



Create a separate entity for holding a single reference between log and assignment:



assignmentLog: { assignmentId, logId }




Another approach ?



Any advice will be appreciated. Thanks.









share







New contributor




Bogdan Kobylynskyi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

























    0















    Need a piece of advice for storing a large number of references between Mongo entities that are frequently updated.



    Some background:




    • 1 event can have 100-1000 logs.

    • 1 event can have 1-10 assets associated (assignment object).

    • Logs are created per asset per event.

    • Query pattern: find all logs by assignment (eventId and assetId).


    Entities with their relations:



    EVENT <-1--------------N-> LOG   
    EVENT <-N--ASSIGNMENT--N-> ASSET


    Mongo collections and documents:



    event: { id, name, ... }
    asset: { id, name, ... }
    log: { id, eventId, metadata, ... }
    assignment: { id, assetId, eventId, metadata, ... }


    Here comes the question:




    • What is the best way to store associations between logs and assignments (events and assets)? Note that those associations are updated frequently and concurrently.


    Approach 1



    Store logIds in assignment entity:



    assignment: { id, assetId, eventId, logIds, ... }


    Approach 2



    Create a separate entity for holding a single reference between log and assignment:



    assignmentLog: { assignmentId, logId }




    Another approach ?



    Any advice will be appreciated. Thanks.









    share







    New contributor




    Bogdan Kobylynskyi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.























      0












      0








      0








      Need a piece of advice for storing a large number of references between Mongo entities that are frequently updated.



      Some background:




      • 1 event can have 100-1000 logs.

      • 1 event can have 1-10 assets associated (assignment object).

      • Logs are created per asset per event.

      • Query pattern: find all logs by assignment (eventId and assetId).


      Entities with their relations:



      EVENT <-1--------------N-> LOG   
      EVENT <-N--ASSIGNMENT--N-> ASSET


      Mongo collections and documents:



      event: { id, name, ... }
      asset: { id, name, ... }
      log: { id, eventId, metadata, ... }
      assignment: { id, assetId, eventId, metadata, ... }


      Here comes the question:




      • What is the best way to store associations between logs and assignments (events and assets)? Note that those associations are updated frequently and concurrently.


      Approach 1



      Store logIds in assignment entity:



      assignment: { id, assetId, eventId, logIds, ... }


      Approach 2



      Create a separate entity for holding a single reference between log and assignment:



      assignmentLog: { assignmentId, logId }




      Another approach ?



      Any advice will be appreciated. Thanks.









      share







      New contributor




      Bogdan Kobylynskyi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.












      Need a piece of advice for storing a large number of references between Mongo entities that are frequently updated.



      Some background:




      • 1 event can have 100-1000 logs.

      • 1 event can have 1-10 assets associated (assignment object).

      • Logs are created per asset per event.

      • Query pattern: find all logs by assignment (eventId and assetId).


      Entities with their relations:



      EVENT <-1--------------N-> LOG   
      EVENT <-N--ASSIGNMENT--N-> ASSET


      Mongo collections and documents:



      event: { id, name, ... }
      asset: { id, name, ... }
      log: { id, eventId, metadata, ... }
      assignment: { id, assetId, eventId, metadata, ... }


      Here comes the question:




      • What is the best way to store associations between logs and assignments (events and assets)? Note that those associations are updated frequently and concurrently.


      Approach 1



      Store logIds in assignment entity:



      assignment: { id, assetId, eventId, logIds, ... }


      Approach 2



      Create a separate entity for holding a single reference between log and assignment:



      assignmentLog: { assignmentId, logId }




      Another approach ?



      Any advice will be appreciated. Thanks.







      database-design mongodb





      share







      New contributor




      Bogdan Kobylynskyi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.










      share







      New contributor




      Bogdan Kobylynskyi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.








      share



      share






      New contributor




      Bogdan Kobylynskyi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 7 mins ago









      Bogdan KobylynskyiBogdan Kobylynskyi

      1011




      1011




      New contributor




      Bogdan Kobylynskyi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Bogdan Kobylynskyi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Bogdan Kobylynskyi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          0






          active

          oldest

          votes











          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "182"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });






          Bogdan Kobylynskyi is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f232810%2fmongodb-approach-for-storing-frequently-modified-arrays%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          Bogdan Kobylynskyi is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          Bogdan Kobylynskyi is a new contributor. Be nice, and check out our Code of Conduct.













          Bogdan Kobylynskyi is a new contributor. Be nice, and check out our Code of Conduct.












          Bogdan Kobylynskyi is a new contributor. Be nice, and check out our Code of Conduct.
















          Thanks for contributing an answer to Database Administrators Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f232810%2fmongodb-approach-for-storing-frequently-modified-arrays%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Liste der Baudenkmale in Friedland (Mecklenburg)

          Single-Malt-Whisky

          Czorneboh