Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You should do both - maintain a master storage of the language data in a database, which will make it easy to build management application around it, and build local files (or other local storage approach) for the actual execution. Constantly querying language data from the database is wasted effort, specifically because language data typically is pretty static. </p> <p>If you want to ensure scalability, you should build on at least three layers: </p> <ol> <li><p>Local (<a href="http://www.sqlite.org/" rel="nofollow">SQLite</a>, <a href="http://redis.io/" rel="nofollow">Redis</a>, files in <a href="http://en.wikipedia.org/wiki/Tmpfs" rel="nofollow">tmpfs</a>...); and</p></li> <li><p>Cloud-like (e.g. <a href="http://memcached.org/" rel="nofollow">Memcached</a>); and </p></li> <li><p>Master storage (e.g. a database server)</p></li> </ol> <p>The decision on which layer to store your data should always be based on from where the data is retrieved in the most efficient way:</p> <ol> <li><p>Static or de facto static data (=language, configuration, skins...) should be stored locally, to guarantee fastest possible access to the data. You will have to come up with a way for building and syncing updated data across multiple servers (save for local cache, if you are using such). Approaches include: <a href="http://en.wikipedia.org/wiki/Rsync" rel="nofollow">rsync</a>, <a href="http://www.cis.upenn.edu/~bcpierce/unison/" rel="nofollow">unison</a>, Redis replication, version control systems...</p></li> <li><p>Dynamic but cacheable data should live in the cloud-like cache, as the assumption is that it is often rebuilt and so can take advantage of the performance gains that come from sharing built data.</p></li> <li><p>Database should be only accessed when you can't avoid it (e.g. stale cache)</p></li> </ol> <p>I wouldn't particularly worry about the IO access costs. Scaling a database server or having to do rearchitecturing mid-project will be much more expensive than the IO. And if you're worried about it, find a local storage solution that mainly relies on RAM and you can avoid the disk reads altogether and enjoy another performance gain.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload