JackonYang/distributed-vertical-crawlers

姓名与电话号码的底层数据库 API

Closed this issue · 7 comments

数据库设计:

mysql, 2 张表。

  1. individual。包含字段:
    id(主键,自动生成,全局唯一,支持并发操作,不可修改)
    name:人名。前期只处理中、英文。
    brief:简要介绍。主要用于重名的处理,也可用于按人名搜索时展示的基本信息。
  2. cellphone
    phonenumber(主键。也可以自动生成主键。建议,使用手机号直接作为主键)
    owner_id 所有者的id,对应individual的主键。最好在数据库层面绑定外键约束。
    on_time 生效时间
    off_time 失效时间。

期望结果:

  1. 自动刷数据库的脚本。shell, sql, c, python等皆可。只要不是手动创建表空间就行。。。
  2. 根据 name 和 phonenumber 实现数据的插入和变更。
  3. 查询。
    (1)查询特定时间点有效的电话号码,默认使用当前时间。
    (2) 查询所有人当前有效的电话。注意,不是所有号码。

刚刚坑爹的点了删除评论……我错了。。。先复原一下你的问题……

你说的自动刷数据库是什么意思,是建立数据库还是更新数据库的数据
特定时间点指的是什么?
有效号码是如何计算的?
on_time和off_time在这两个例子里面的作用是什么?还是在这两个例子里面的作用还没有发挥?

zmy commented

厄现在这边是又开始开发了?renren那个repo和这个现在是啥关系orz

才写了个相册抓取器... 感觉还是先把抓到的东西存到本地,然后parse比较爽~_~

  1. 自动刷数据库。主要是建立数据库、表、列等。这里不涉及数据。
  2. 后三个问题,本质是一件事情。

特定时间点,即用户指定的一个时间。比如 2012.1.1 日时,某人使用的号码(有效号码)

有效号码,即已经开始使用,但还没被放弃的号码。也就是在特定时间使用的号码。

on_time 是开始使用的时间点。

off_time 是停止使用的时间点。

所以,在这两个例子里面,判断号码在某个时间是否有效,就是跟 on_time off_time 做比较。

昂~数据库的表结构一开始就建立好了的,有的字段可能没有数据,我们就不填,以后要是再往对应的字段添加数据的话,直接调用API就可以了,

看了一下你的初步代码,

根据 name 查询号码,可用性很好。
但是,你如何处理重名现象?

我觉得,还是分开吧,底层提供两个独立的接口。
获取 id 和 根据 id 获取 phone。
剩下的再上层封装。

我打算在前端界面上直接匹配到用户期望查询的 id,发到后台的就只是根据 id 获取 phone 了。
只要查一次 cellphone 表比较时间即可。

然后就是获取 id 的函数做成模糊查询。比如名字中包含 王 的所有人。
提供 2 个接口,或者用其他方式实现 2 中返回值。

  1. 只返回匹配到的 id 与 名字。
  2. 返回匹配到的 id,名字和其他简要信息字段。简要信息字段,暂时只有 brief, 后续可能要加入头像(url即可)

用户在页面上输入的是什么?

明天我出一份低保真的 ucd 给你简单看一下
另外,构造一组测试数据,写出单元测试用例。
然后,你根据这个用例做开发。跑通用例即可。