Keep locations in drupal I have created a form where customers select two fields for a transportation. From origin to destination. My list of geographical locations could be close to 5,000 records. What is the best way to keep this location in the database? Taxonomy or store as a list for selection on each field?

Any recommendation is more than welcome. I'd need to store something like this:

El Salvador SVCSC   Cara Sucia  Cara Sucia, SV  SVCSC|Cara Sucia, SV

El Salvador SVCNG   Chalatenango    Chalatenango, SV    SVCNG|Chalatenango, SV

An important point is that I need users to select this with autocomplete like any airline website does (Kayak, Hipmunk, etc).
You should create a content type Locations

and add the following as form fields
1.cities
2.states(Provinces)
3.countries

Use two modules 


Entity Reference

Use a field entity reference in your custom form for origin and destination with content type locations  
Tokens  3. Auto nodetitle
By installing the tokens and auto node title you can set the title for locations as per your needs
like [field:cities]|[field:province]|[field:country] in the edit link of content type locations


the title u set for the content type will be used in the origin and destination field . You can set your field as autocomplete as well as follows:

function module_name_menu() {  
  $items['location/autocomplete'] = array(
    'page callback' =&gt; '_module_name_autocomplete',
    'access arguments' =&gt; array('access location autocomplete'),
    'type' =&gt; MENU_CALLBACK
  );
  return $items;
}


function module_name_form() {
  $form = array();

  $form['origin'] = array(
    '#title' =&gt; t('origin'),
    '#type' =&gt; 'textfield',
    '#autocomplete_path' =&gt; 'location/autocomplete',
   );

  $form['destination'] = array(
    '#title' =&gt; t('destination'),
    '#type' =&gt; 'textfield',
    '#autocomplete_path' =&gt; 'location/autocomplete',
   );

  $form['submit'] = array(
    '#type' =&gt; 'submit',
    '#value' =&gt; 'Save',
  );

  return $form;
}

function _module_name_autocomplete($string) {
  $matches = array();


  $query = db_select('locations', 'loc');
     -&gt;fields('loc', array('title'))
    -&gt;condition('c.title', '%' . db_like($string) . '%', 'LIKE')
    -&gt;range(0, 10)
    -&gt;execute();

  // add matches to $matches  
  foreach ($return as $row) {
    $matches[$row-&gt;title] = check_plain($row-&gt;title);
  }

  // return for JS
  drupal_json_output($matches);
}