{
    "componentChunkName": "component---src-templates-doc-page-jsx",
    "path": "/angular-data-grid/server-side-model-row-stores/",
    "result": {"data":{"markdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Inside the Server-Side Row Model (SSRM), rows are stored in Row Stores. There are two types of\nRow Stores - Full Store and Partial Store. This section explains more on these two different Row Store types."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"row-stores","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#row-stores","ariaLabel":"row stores permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","dataPrefix":"fas","dataIcon":"link","className":["svg-inline--fa","fa-link"],"role":"img","xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 512 512"},"children":[{"type":"element","tagName":"path","properties":{"fill":"currentColor","d":"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"},"children":[]}]}]},{"type":"text","value":"Row Stores"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"A Row Store stores "},{"type":"element","tagName":"a","properties":{"href":"/archive/27.3.0/row-object/"},"children":[{"type":"text","value":"Row Nodes"}]},{"type":"text","value":". A Row Node represents one Row inside the grid."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"There is at least one Row Store inside the SSRM for storing top level rows. The diagram below shows a SSRM with one Row Store."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"style":"text-align: center; margin-top: 30px; margin-bottom: 30px;"},"children":[{"type":"text","value":"\n    "},{"type":"element","tagName":"img","properties":{"src":"/archive/27.3.0/9ca1f4660101106855f317f6a8487ce8/single-store.svg","alt":"Single Store","style":"width: 40%;"},"children":[]},{"type":"text","value":"\n    "},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"Fig 1. Node Store"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If the grid had "},{"type":"element","tagName":"a","properties":{"href":"/archive/27.3.0/server-side-model-grouping/"},"children":[{"type":"text","value":"Row Grouping"}]},{"type":"text","value":" there would be many rows stores, but for now we consider the simple case."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"row-store-types","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#row-store-types","ariaLabel":"row store types permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","dataPrefix":"fas","dataIcon":"link","className":["svg-inline--fa","fa-link"],"role":"img","xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 512 512"},"children":[{"type":"element","tagName":"path","properties":{"fill":"currentColor","d":"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"},"children":[]}]}]},{"type":"text","value":"Row Store Types"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"There are two types of Row Stores, which differ in their strategy for loading and managing rows. The types of Row Stores are as follows:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Full Store"}]},{"type":"text","value":":\nLoads rows all at once (eg if 500 rows in total, will load all 500 in one go).\nThis allows sorting and filtering inside the grid (a server\nrequest isn't required to sort and filter) as the grid has all the rows needed\nto do these operations."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The name \"Full Store\" comes from the fact all data is loaded into the store,\nand not partially using blocks. The store is full of rows, no more rows will be loaded\nafter the initial load."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Partial Store"}]},{"type":"text","value":":\nLoads rows in blocks (eg 500 rows in total and 100 rows in a block, 5 block loads are required).\nBlocks are loaded as the user scrolls down and stored in a cache inside the\nPartial Store. This technique, of loading rows as the user scrolls down,\nis known as "},{"type":"element","tagName":"a","properties":{"href":"https://en.wiktionary.org/wiki/infinite_scroll"},"children":[{"type":"text","value":"Infinite Scrolling"}]},{"type":"text","value":".\nBlocks that are no longer needed (the user has scrolled past the blocks rows and are no longer visible)\nare optionally purged from the cache, thus controlling the browser's memory footprint."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The name \"Partial Store\" comes from the fact rows are partially loaded using blocks,\none block at a time."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"style":"text-align: center; margin-top: 30px; margin-bottom: 30px;"},"children":[{"type":"text","value":"\n    "},{"type":"element","tagName":"img","properties":{"src":"/archive/27.3.0/18c1745beba614fd36876a3a79ddfbe6/full-vs-partial-store.svg","style":"width: 80%;","alt":"Partial Store vs Full Store"},"children":[]},{"type":"text","value":"\n    "},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"Fig 2. Partial Store vs Full Store"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Set the store type using the grid property "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"serverSideStoreType"}]},{"type":"text","value":". Set to "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"full"}]},{"type":"text","value":" to use the Full Store and "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"partial"}]},{"type":"text","value":"\nto use the Partial Store. If not set, the Full Store is used."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Below shows a simple example using Partial Store. Note the following:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Open the console to observe when the server is called to load rows."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Rows are loaded back 100 rows at a time. As the user scrolls down, more rows will be loaded."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sorting the data is not possible by the grid and requires the data to be retrieved from the server again.\nSorting on the server side is explained in "},{"type":"element","tagName":"a","properties":{"href":"/archive/27.3.0/server-side-model-sorting/"},"children":[{"type":"text","value":"Server-Side Sorting"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"grid-example","properties":{"title":"Partial Store","name":"partial-store","type":"generated","options":"{ \"enterprise\": true, \"modules\": [\"serverside\"] }"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Below shows a simple example using Full Store. Note the following:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Open the console to observe when the server is called to load rows."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"All the rows are loaded back in one go."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sorting the data is done by the grid when the columns headers are clicked. Sorting is possible by the grid because\nthe entire dataset is loaded into the grid."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"grid-example","properties":{"title":"Full Store","name":"full-store","type":"generated","options":"{ \"enterprise\": true, \"modules\": [\"serverside\"] }"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["custom-block","note"]},"children":[{"type":"element","tagName":"div","properties":{"className":["custom-block-body"]},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"At this point you might be wondering what’s the advantage of using the Full store versus\nthe standard "},{"type":"element","tagName":"a","properties":{"href":"/archive/27.3.0/client-side-model/"},"children":[{"type":"text","value":"Client-Side Row Model"}]},{"type":"text","value":".\nThe difference is when Row Grouping, the children of the row groups are loaded as the\ngroups are expanded. For Client-Side Row Model, all data needs to be loaded up front."}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"partial-store-vs-full-store","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#partial-store-vs-full-store","ariaLabel":"partial store vs full store permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","dataPrefix":"fas","dataIcon":"link","className":["svg-inline--fa","fa-link"],"role":"img","xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 512 512"},"children":[{"type":"element","tagName":"path","properties":{"fill":"currentColor","d":"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"},"children":[]}]}]},{"type":"text","value":"Partial Store vs Full Store"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"So when is it best to use Partial Store? And when is it best to use Full Store?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Use Full Store when all of the data comfortably fits inside the browsers memory. It is possible to present big\ndata inside an application using a combination of Full Store and Row Grouping. For example a dataset could have\n10 million rows, however due to grouping only 200 rows are brought back at any group level - in this case\nFull Store would work fine."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Use Partial Store when all of the data at a particular group level will not comfortably fit inside the browsers memory.\nFor example a dataset with 10 million rows with no grouping applied would not fit inside a browsers memory, thus\nPartial Store would be needed to view it."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"partial-store-restrictions","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#partial-store-restrictions","ariaLabel":"partial store restrictions permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","dataPrefix":"fas","dataIcon":"link","className":["svg-inline--fa","fa-link"],"role":"img","xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 512 512"},"children":[{"type":"element","tagName":"path","properties":{"fill":"currentColor","d":"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"},"children":[]}]}]},{"type":"text","value":"Partial Store Restrictions"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The Partial Store comes with one advantage - it can manage a very large amount of data by breaking it into blocks\nand using infinite scrolling to load the blocks as the users scrolls. However it comes with the following restrictions."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"In Grid Sorting"}]},{"type":"text","value":"\nBecause data is read back in blocks from the Partial Store, the grid cannot sort the data,\nas it does not have all the data loaded. All sorting must be done on the server\nas described in "},{"type":"element","tagName":"a","properties":{"href":"/archive/27.3.0/server-side-model-sorting/"},"children":[{"type":"text","value":"Sorting"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"In Grid Filtering"}]},{"type":"text","value":"\nBecause data is read back in blocks from the Partial Store, the grid cannot filter the data,\nas it does not have all the data loaded. All filtering must be done on the server\nas described in "},{"type":"element","tagName":"a","properties":{"href":"/archive/27.3.0/server-side-model-filtering/"},"children":[{"type":"text","value":"Filtering"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Updating Data"}]},{"type":"text","value":"\nUpdating data in the grid using "},{"type":"element","tagName":"a","properties":{"href":"/archive/27.3.0/server-side-model-transactions/"},"children":[{"type":"text","value":"Transactions"}]},{"type":"text","value":" is not supported\nby the Partial Store."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"This is because applying updates would potentially move rows between blocks, which would not be possible\nif all blocks are not loaded."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Changing Data"}]},{"type":"text","value":"\nIf data on the server is changing with regards inserts and deletes, this will cause problems with the\nPartial Store. This is because data is read back from the server in blocks.\nIf the data is changing such that the data in each block changes,\nthen the Partial Store will get incorrect rows. For example consider the following scenario:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"The grid asks for rows 0 to 99 (i.e. first block of 100 rows) and these get read from a database."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Another application inserts a row at index 50."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"The grid asks for rows 100 to 199 (the second block of 100 rows) and again these get read from the database."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In this scenario the grid will have the last row in the first block appear again as the first row in the second\nblock. This is because the row was at index 99 before the insert and then at index 100 after the insert."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If data is changing such that row indexes will change and result in duplicate or missing rows across\nblocks, then it is best either avoid the Partial Store or use a snapshot of data to prevent data updates."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"next-up","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#next-up","ariaLabel":"next up permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","dataPrefix":"fas","dataIcon":"link","className":["svg-inline--fa","fa-link"],"role":"img","xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 512 512"},"children":[{"type":"element","tagName":"path","properties":{"fill":"currentColor","d":"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"},"children":[]}]}]},{"type":"text","value":"Next Up"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Continue to the next section to learn about "},{"type":"element","tagName":"a","properties":{"href":"/archive/27.3.0/server-side-model-configuration/"},"children":[{"type":"text","value":"Configuration"}]},{"type":"text","value":" of the SSRM."}]}],"data":{"quirksMode":false}},"frontmatter":{"title":"SSRM Row Stores","version":null,"enterprise":true,"description":null},"headings":[{"id":"row-stores","depth":2,"value":"Row Stores"},{"id":"row-store-types","depth":2,"value":"Row Store Types"},{"id":"partial-store-vs-full-store","depth":2,"value":"Partial Store vs Full Store"},{"id":"partial-store-restrictions","depth":2,"value":"Partial Store Restrictions"},{"id":"next-up","depth":2,"value":"Next Up"}]}},"pageContext":{"frameworks":["javascript","angular","react","vue"],"framework":"angular","srcPath":"/server-side-model-row-stores","pageName":"server-side-model-row-stores"}},
    "staticQueryHashes": ["1766026005","3577950178","699667431"]}