关于内置数据库与外部数据库选择问题的新思考。
几个前提:
1、内置数据库只支持sqlite的现状,短期内估计不会变化
2、同服务器内(活字格服务器和外联数据库安装在同一个服务器内),内置的sqlite数据库的计算效率远大于外联数据库,无论是mysql还是sqlserver。(这个结论,仅在一般服务器配置下得出,比如腾讯云的2核8G,带宽不限。测试的情况包括:大数据加载、数据导入、递归计算、笛卡尔集计算、复杂的数据库服务端命令等,差异有时会到几秒到十几秒。外联数据库用存储过程,另当别论。服务器配置高,可以差异会少一些,没试过)
3、同服务器跨应用,内置数据库sqlite无法相互访问,造成数据割裂。(sqlite是随应用的)
4、服务端命令可以解决之前很多只能依靠存储过程解决的问题,等服务端命令可以执行sql的时候,这个会有更大的空间
基于以上原因,如果是中小类型应用,服务器预算又不是特别高的,建议考虑sqlite。如果使用sqlite的话,就要解决跨应用处理数据的问题。目前有两个方案可以考虑:
方案1:全部应用都使用sqlite,跨应用时,通过服务端命令+webapi来处理数据,如果要用到webapi,门槛高很多,需要的技术栈为低于入门一些的C#和JS(ES5部分)
方案2:主应用使用sqlite,次应用使用mysql或sqlserver,主应用通过外联数据库来处理次应用的数据,如果次应用需要调用主应用数据,则使用服务端命令。 |