Beruflich Dokumente
Kultur Dokumente
Introduction
BFS State System
Purpose
Indicates which version of maps are currently active
Indicates when new data has arrived and when new maps should be built
Serves as historical record for data feed updates
Components
BFSStateValue table
Holds state value entries for each data type. Periodically trimmed when it gets too big.
Stored Procedures:
BFSStateValueAdd - adds new row for a state name / value
BFSStateValueGetCur - retrieves most recent row for a state name
BFSStateValue Table
State Names
State names are associated with individual data sources. Naming conventions
follow a general pattern but are not always consistent. Data type, location, and
GDS (when applicable) are encoded in the name.
Form: YYYYMMDD_MMM_NNN
Referred to as BMV (BFS Map Version)
Identify data files present on servers (file server, Q server, etc.)
YYYYMMDD - date
MMM - identifies the data type. (ex. 001, 003, 007, 026, etc.)
NNN - timestamp (#of minutes past midnight / 2). Set to "000 when
not applicable.
Allows for easy comparison between versions
i.e. If GlobalxxxxVersion > BFSPGlobalxxxxBFSPVersion
Build new maps
Update state values
BFSP states
BFSPGlobalBFSP refers to maps on file server available for building
new maps.
BFSPGlobalBFSQ refers to maps on file server that are globally
available for distribution to Q servers.
BFSPLocalBFSP refers to maps residing on a specific Preprocessor
after they are built ready for copying to file server.
BFSQ states
Always Local. Specific to individual Q Server
Work Flow
Data download and processing sequence and corresponding state updates
1) New source data on FTP site is downloaded to File Server and matching
GlobalVersion state updated with latest version number.
Note: For some data (i.e. fares), "swap" messages are sent from GDS. BFS
updates GlobalCurrentGDS and BFSQLocalCurrent states when they
arrive.
Work Flow Diagram
FTP Server BFS Query
Servers
BFS Preprocessor
BFS Distributor
4) New maps copied to
File server. BFSPGlobal
States updated
3) Maps built
BFSPLocal state
updated New maps (AVS) copied to Messages retrieved
File server. BFSDGlobal state From Local Receiver
Updated. Message store.
Workflow -BFSP Managers
Each data feed has manager that runs in continuous loop as follows.
Begin Loop:
If BFSPLocalBFSPVersion > BFSPGlobalBFSPVersion
Copy local maps from preprocessor to file server
Update BFSPGlobalBFS?Version state(s) *
* Note: Two states BFSPGlobalBFSP and BFSPGlobalBFSQ
Begin Loop:
if NOT fares
if BFSPGlobalBFSQVersion > BFSQLocalBFSQVersion
Copy new maps from file server
Update BFSQLocalBFSQVersion
Update BFSQLocalCurrentVersion (Not GDS specific, no swap notification)
endif
else
// Fare map download
More complicated logic for setting BFSQLocalBFSQ and BFSQLocalCurrent[GDS]Version
Need to synch with GDS based on having received swap notifications.
endif
Fares are always delivered as an update except by default. Fare Inits (a.k.a.
All-Adds) are delivered by request and cost ~$30K
Fare Maps
Domestic fares
3 updates daily: 001, 003, 005
International fares
5 updates daily: 051, 053, 055, 057,059
Update versions contain updated records since the last base maps were built.
GDS can differ as to which update is current in their system. Base + update
architecture allows BFS to simultaneously load different update maps to match
multiple GDSs using less memory.
New base maps are generally built each night ("flattening") provided that all GDSs
have swapped to the final daily update. (005 - domestic, 059 - international)
Fare Swap
Each GDS notifies BFS when they have switched to the next fare update. Allows
BFS to stay in synch.
WCSWAP service on Preprocessor. Lets us know when TravelPort (WSPN) has swapped.
Sabre swap msgs delivered via message queue. Distributor updates BFS state
Global States
GlobalWSPNCurrentMapVersion: current Travelport domestic fare version
Global1SCurrentMapVersion: current Sabre domestic version
BFSQ States
BFSQLocalCurrentMapVersion - Domestic maps used when pricing against Travelport.
BFSQLocalSabreCurrentMapVersion Domestic maps used version when pricing against
Sabre
Usually happens nightly but only if all GDSs have swapped to pricing with
the last daily fare update.
Partial All-Adds
Partial replacement
Treated more like a fare update
Shows up as timestamp in version number
Ex. 20080207_059_230
BFSPGlobalBFSP version updated but not BFSPGlobalBFSQ
Copied to file server but not Q servers
Folded in with next scheduled fare update i.e. 001, 051
Map Version Chaining
Relevant to data sources delivered as an update (vs init).
Each type consists of one or more SQL table exports from Sabres database (ex.
BSR = 1 table. MET =12 tables)
BFS imports raw data into matching SQL tables. Maps generated by extracting data
from tables.*
*Note: Really large files (i.e. Mileage and AVS Summary) may not get loaded into SQL
tables. Instead we may choose to build maps directly from the raw source.
Sabre farm
Farm name used in BFSStateValue table to indicate current version of
data stored in tables.