V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Freeego
V2EX  ›  程序员

像全球城市这种数据你们一般放在数据库还是本地?

  •  
  •   Freeego · 2021-04-11 11:34:14 +08:00 · 3158 次点击
    这是一个创建于 401 天前的主题,其中的信息可能已经有所发展或是发生改变。

    范围是全球的所有国家-省 /州-主要城市,需要关键字搜索。目前我就搞了个 xml 放在本地,几百 k 的大小,倒也可以。但是现在需要支持英文查询,扩展起来就有点麻烦了,想着要不要放到数据库里。这种基本不会变的数据你们一般放在数据库里还是本地?

    17 条回复    2021-04-12 10:36:59 +08:00
    securityCoding
        1
    securityCoding  
       2021-04-11 11:57:48 +08:00 via Android
    数据库,github 上开源直接导入进去就行
    toomlo
        2
    toomlo  
       2021-04-11 13:55:08 +08:00
    放内存里?
    conghuiwang
        3
    conghuiwang  
       2021-04-11 14:46:22 +08:00
    city as a service
    tanranran
        4
    tanranran  
       2021-04-11 15:05:33 +08:00
    github raw 文件
    crclz
        5
    crclz  
       2021-04-11 16:55:13 +08:00
    - 使用 Git 对 xml 城市数据进行版本管理。对它的修改也要通过版本管理控制。对于这种不常变动的信息,可以充分发挥 Git 的优势。

    - 开发同步程序,能够实现在改动后,将 xml 的城市数据同步到数据库。

    - 如果后面由于业务的演化,还想要更强的定制性,那么就不要让同步程序直接访问数据库,而是开发一个 Rest 的服务。这样,就产生了 2 个微服务,其中,同步服务通过 Restful 接口将信息传递给主服务。

    2 个微服务的优势是:如果需要收集更加全面的城市信息,只需要在保证接口的情况下,将城市信息服务的摊子丢给其他人,提升开发效率。

    ---

    我之前开发的一个柯南追剧的网站(自己用)就存在和你类似的需求。
    1000+集柯南(每周六从 wiki 挂 vpn 手动获取)、剧场版和 OVA (每年手动填写 csv 表格)。这些不同的数据源都通过单独的服务进行管理,而无需将逻辑泄露给主服务。以上的建议也是基于我在这里的实践经验提出。
    DoctorCat
        6
    DoctorCat  
       2021-04-11 17:39:23 +08:00
    在数据库查询 /变更起来岂不是很便利?为啥非要考虑本地存储呢?
    Freeego
        7
    Freeego  
    OP
       2021-04-11 18:13:41 +08:00
    @DoctorCat 主要是我想把这种写死的量也不大的数据当成资源文件,不用每次在搜索栏里输一下就得发个请求给后台,增加点效率
    zhoujinjing09
        8
    zhoujinjing09  
       2021-04-11 19:41:12 +08:00
    取决于你要不要一直改这个东西,不改的话本地最方便,而且可以直接装到内存里
    iseki
        9
    iseki  
       2021-04-11 20:11:49 +08:00
    感觉还是作为配置文件资源存在比较好一点,初始化后加载进内存(
    wolfie
        10
    wolfie  
       2021-04-11 21:48:40 +08:00
    数据库,带版本号字段,本地文件有什么优势吗。
    Yourshell
        11
    Yourshell  
       2021-04-11 22:03:33 +08:00
    整个 excel
    hotsymbol
        12
    hotsymbol  
       2021-04-12 00:57:59 +08:00
    放 etcd 里?全球节点同步
    gBurnX
        13
    gBurnX  
       2021-04-12 02:00:26 +08:00
    几百 k 的东西,又是要经常查询,考虑到修改,建议这样做:

    1.保存在数据库里。

    2.相关系统启动时,从数据库加载,加载到高速缓存里。

    3.当数据库发生更改,使用事务同步到正在运行中的相关系统的缓存里去。
    ikas
        14
    ikas  
       2021-04-12 05:23:26 +08:00
    这种字典数据...肯定是统一管理,db 中,然后 load 到内存
    ikas
        15
    ikas  
       2021-04-12 05:23:40 +08:00
    @ikas 缓存
    wellsc
        16
    wellsc  
       2021-04-12 09:15:14 +08:00 via iPhone
    LiYanHong
        17
    LiYanHong  
       2021-04-12 10:36:59 +08:00
    放 js 里
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3898 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 484ms · UTC 03:50 · PVG 11:50 · LAX 20:50 · JFK 23:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.