title: Planning, Scaling and Optimizing Large Web Application
body: <p>I'm currently designing and developing a web application that has the potential to grow very large at a fast rate. I will give some general information and move on to my question(s). I would say I am a mid-level web programmer.</p>
  
  <p>Here are some specifications:
  MySQL - Database Backend
  PHP - Used in front/backend. Also used for SOAP Client
  HTML, CSS, JS, jQuery - Front end widgets (highcharts, datatables, jquery-ui, etc.)</p>
  
  <p>I can't get into too many fine details as it is a company project, but the main objective is to construct a dashboard that thousands of users will be accessing from various devices.</p>
  
  <p>The data for this project is projected to grow by 50,000 items per year ( ~1000 items per week ). </p>
  
  <p>1 item = 1 row in database</p>
  
  <p>An item will also record a daily history starting at the day it was inserting. </p>
  
  <p>1 day of history per item = 1 record</p>
  
  <p>365 records per 1 year per device</p>
  
  <p>365 * 50,000 = ~18,500,000 [first year]</p>
  
  <p>multiply ~18,500,000 records by x for each year after.</p>
  
  <p>(My forumla is a bit off since items will be added periodically throughout that year)</p>
  
  <p>All items and history are accessed through a SOAP Client that connects to an API service, then writes the record to the database.</p>
  
  <p>Majority of this data will be read and remain static (read only). But some item data may be updated or changed. The data will also be updated each day and need to write another x amount of history.</p>
  
  <p>Questions:</p>
  
  <p>1) Is MySQL a good solution to handle these data requirements? ~100 million records at some point.</p>
  
  <p>2) I am limited to synchronous calls with my PHP Soap Client (as far as I know). This is becoming time consuming as more items are being extracted. Is there a better option for writing a SOAP Client so that I can send asynchronous requests without waiting for a response?</p>
  
  <p>3) Are there any other requirements I should be thinking about?</p>