[Web/Database/Backend] FlightSearch@concur

By Steven
07/13/2014
0

开个坑记录一下在concur学到的东西吧, Web方面的准备单开一帖, 这里主要记录一下关于FlightSearch这个项目本身学到的东西. (这个项目并不是concur任何现有产品的组成部分, 可以说是一个experiment, 所以在这post一下我的总结应该没有什么大问题)

在concur的intern program还是比较轻松的, manager各种nice, team里的人也不错. 跟另外2个uw cse的本科生一起在travel组, 分到了这么个项目: 做一个web service, 响应http call, 输入参数为航班的出发/到达机场, 要求的出发或到达时间范围, 以及其他一些参数例如最多几个stop等等, 然后要以xml/json格式输出符合条件的航班, 并且合理排序.

以上就是整个项目的需求了, 第一眼看还觉得诶我去这肯定特别简单啊! 但接着往下读需求就发现了问题: 数据来源是一个大约有50 million 行的表, 每行是一个具体的flight, 50 million 大约是一整年多一点的flight数据. 找一个地方到另外一个地方的航班, 如果只是nonstop的, 那很简单的query就找出来了. 然而问题是我们可能需要找1stop, 2stops 甚至3stops 的时候, 如果直接self join, 那基本是没有希望看到这个query run完了.

Manager想让我们寻找一种新的解决思路, 用一些新工具等等, 并且提示了我们graph database可能有用, 不过他也不确定. 我们之后的工作也很长一段时间去研究了graph database, 但固执如我还是觉得在sql里可以进行一些优化的. 于是我就开始寻找纯sql解决方案. 以下是我进行的一些尝试:

1. query optimization
2. separate subqueries
3. index

(TBD)

Comments: 0

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: