目前有大概300多个终端(智能手机)需要每20s向服务器发送一次坐标,携带信息包括电话号码和坐标以及类型等其他信息,后续也可能有新的终端加入到系统,这个加入是全自动的,也就是一个新的智能手机,装了一个app之后就开始上传,没有注册什么的步骤。
另外需要提供一个包含地图的页面让客户能够看到这些终端的最新位置并实时刷新,拟采用ajax轮训,每30秒查询一次服务器。
准备采用mysql,现在觉得数据库结构不确定,有几种思路:
1 一个表搞定数据
phone type x y updated
收到终端定位请求就插入一条记录,页面查询的话通过sql语句查出每个终端最新的位置
这样感觉比较简单,每次请求只需一次插入操作,但是如果后续终端包含的信息多起来的话,担心冗余,比如这个表里面 type就重复存储了。
2 两张表
表1:元数据
phone type x y
表2:轨迹数据
phone x y updated
这样收到终端定位,首先插入一条记录到表2,然后判断表1里面有没有这个phone,没有就代表新增设备,insert一条记录,有的话就更新坐标。
页面查询就查询表1。
这个方式会导致在收到终端坐标需要两次操作,可能需要事务控制。
不知道这些方式那个可行?有没有做过类似项目的给点经验?
另外,后台用node做靠不靠谱?
貌似最大的问题不是设计结构而是数据库选择,建议直接一个mongodb搞定,不用两个数据库。
这样只要两个collections就可以搞定,mongo的更新和插入还支持批量插入。
建个2d的索引,将来如果做z坐标索也有一定扩展能力。
表1:元数据
表2:轨迹数据
mongo的一些特性肯定让你未来的操作更简便
比如:
找某点最近的phone: