Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Countries States Cities Database | 4,908 | 6 days ago | 41 | odbl-1.0 | PHP | |||||
🌍 Discover our global repository of countries, states, and cities! 🏙️ Get comprehensive data in JSON, SQL, XML, YAML, and CSV formats. Access ISO2, ISO3 codes, country code, capital, native language, timezones (for countries), and more. #countries #states #cities | ||||||||||
Octosql | 4,482 | 2 | 19 days ago | 32 | September 04, 2022 | 40 | mpl-2.0 | Go | ||
OctoSQL is a query tool that allows you to join, analyse and transform data from multiple databases and file formats using SQL. | ||||||||||
Maxwell | 3,642 | 2 | 12 days ago | 84 | July 29, 2022 | 225 | other | Java | ||
Maxwell's daemon, a mysql-to-json kafka producer | ||||||||||
Manticoresearch | 3,421 | 13 hours ago | 234 | gpl-2.0 | C++ | |||||
Easy to use open source fast database for search | Good alternative to Elasticsearch now | Drop-in replacement for E in the ELK soon | ||||||||||
Go Awesome | 3,368 | a month ago | 2 | cc0-1.0 | ||||||
Go 语言优秀资源整理,为项目落地加速🏃 | ||||||||||
Sql Generator | 1,923 | a year ago | 1 | May 18, 2022 | 1 | apache-2.0 | Vue | |||
🔨 用 JSON 来生成结构化的 SQL 语句,基于 Vue3 + TypeScript + Vite + Ant Design + MonacoEditor 实现,项目简单(重逻辑轻页面)、适合练手~ | ||||||||||
Trdsql | 1,495 | 2 | 23 days ago | 46 | January 19, 2022 | 13 | mit | Go | ||
CLI tool that can execute SQL queries on CSV, LTSV, JSON and TBLN. Can output to various formats. | ||||||||||
Radon | 1,466 | 2 years ago | 17 | February 24, 2021 | 2 | gpl-3.0 | Go | |||
RadonDB is an open source, cloud-native MySQL database for building global, scalable cloud services | ||||||||||
Treefrog Framework | 1,198 | 11 days ago | December 09, 2017 | 3 | bsd-3-clause | C++ | ||||
TreeFrog Framework : High-speed C++ MVC Framework for Web Application | ||||||||||
World_countries | 1,092 | a month ago | 13 | June 19, 2022 | 8 | other | PHP | |||
Constantly updated lists of world countries and their associated alpha-2, alpha-3 and numeric country codes as defined by the ISO 3166 standard, available in CSV, JSON , PHP, SQL and XML formats, in multiple languages and with national flags included; also available are the ISO 3166-2 codes of provinces/ states associated with the countries |
DMS正在进行发布以来最大的一次更新,敬请期待... - Gavin 2021.10.18
基于Json Schema/UI Schema模块化
的Json动态数据管理平台。
无论前端、后端、移动端、运维,理论上所有需要动态配置数据的场景都可以使用。
针对前端、移动端:可以配置页面每个模块展示型数据,也可以配置各种版本号用于动态更新,各种功能开关、页面主题等。
针对后端:可以配置业务相关的ID,配置类目,城市列表,热门等。
针对运维:可以作为区分环境的配置中心等。
当然使用场景远不止这些......
当然可以,DMS存储的数据读写是完全分开的,目前支持通过Redis(使用redis获取数据方式请参考注意)、CDN(推荐)两种获取数据方式。即使DMS自身服务器挂掉,也不会影响数据的读取。强烈推荐使用CDN的方式,这样稳定性和使用的CDN是一样的。
请先确保已经安装好:nodejs8+、mysql、redis,并已开启相关服务
安装DMS
> git clone https://github.com/gavin1995/dms.git
> yarn # 若没有yarn,请使用 npm install
创建日志目录
> mkdir /opt/logs/nodejs -p
按需修改配置
.config.js
改名为config.js
config.js
按需进行配置修改执行初始化sql
启动/停止/调试
启动端口默认为:7101,需要修改请修改dms/package.json文件start部分的7101
> yarn start # 启动,若没有yarn,请使用 npm run start
> yarn stop # 停止, npm run stop
> yarn dev # 调试,npm run dev
注册
进入:http://localhost:7101
将自动跳转到登录页,选择【注册】,按要求填写相关数据,注册成功将自动跳转到【应用管理】页面
新建示例应用
点击【新建应用】,新建如下应用
新建示例模块
点击“淘宝首页”的【模块列表】,点击【新建模块】
编写该模块Schema
点击“首页banner”的【编辑Schema定义】,复制如下Schema到【Schema定义】中并【保存Schema】
{
"title": "示例",
"description": "视频/图片展示配置示例",
"type": "array",
"minItems": 3,
"items": {
"type": "object",
"properties": {
"url": {
"title": "跳转链接",
"type": "string"
},
"imgs": {
"title": "轮播图片",
"type": "string",
"format": "file"
}
}
}
}
添加一个参数
进入【参数列表】,添加如下参数
【编辑参数】,【提交】如下参数
编辑数据
点击左侧菜单,进入【数据管理】,进入“淘宝首页”应用的【模块列表】,选择城市后点击【进入】,再选择“首页banner”的【编辑模块数据】,此时还不能上传图片、保存数据,需要启用dms-upload
启动dms-upload
> git clone https://github.com/gavin1995/dms-upload.git
> yarn # npm install
执行初始化sql
配置dms-upload
新建CDN文件(图片、json数据)保存目录
> mkdir /usr/local/services/cdn/dms/data -p # 若未使用默认cdnDir,请修改data前面部分
> mkdir /usr/local/services/cdn/dms/res -p # 若未使用默认cdnDir,请修改res前面部分
启动dms-upload
> yarn start # npm run start
本地调试上传图片回显
> cd /usr/local/services/cdn
> python -m SimpleHTTPServer 5000 # python3 请使用: python3 -m http.server 5000
继续回到DMS平台编辑数据
提交下列数据
临时数据:提交后复制成功Toast中的链接,可以直接访问临时数据数据
正式数据:将临时数据审核为正式数据,也可以通过Toast中的链接直接访问正式数据
1.项目中安装dms-fetch(不建议,强依赖axios,说明见QA)
> yarn add dms-fetch # npm install dms-fetch --save
2.带参数使用示例(伪代码)
import { getDMSDataByCDN } from 'dms-fetch';
import ...
// 复制编辑数据页面的唯一标示,下面是React应用配合使用DMS参数的示例
export default class extends React.Component {
...
fetchData = async () => {
const { city } = getParams(this.props.location.search);
const dmsData = await getDMSDataByCDN(`/7/10/city/${city}`, this.props.location.search);
this.setState({
dmsData,
});
};
...
render() {
...
}
}
在参数列表新建参数
编辑参数:
key value 形式的对象数组
的api生成下拉列表,配置接口地址后,请选择【使用接口地址生成参数】key value 形式的对象数组
,点击+号手动添加下拉菜单项,最后选择【提交】参数可以配合审核地址使用(审核地址里面使用大括号{}包装参数将自动解析,动态生成审核地址)
使用DMS自身生成参数列表示例Schema(城市参数为例):
{
"title": "编辑城市值",
"description": "用于城市选择下拉菜单",
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "object",
"required": ["key", "value"],
"properties": {
"key": {
"type": "string",
"title": "下拉菜单提交值(如:chengdu)"
},
"value": {
"type": "string",
"title": "下拉菜单项名称(如:成都)"
}
},
"message": {
"required": "必须完整填写表单的每一项"
}
}
}
# 有任何问题可以加最下面的QQ群
# dms-upload带有权限验证(该功能默认关闭,外网使用请打开相关注释)
# 需要先执行`dms-upload/database/dms-upload.sql`
# 执行`dms-upload/database/init.sql`后,即可通过root root1234用户授权(也可以使用/api/create创建)
# 修改项目中mysql/redis相关配置`dms-upload/config/config.default.js`(mysql默认密码为:root1234)
# 默认文件保存在/usr/local/services/cdn/dms目录,通过//127.0.0.1:5000/dms访问
# 修改保存路径及访问域名,请修改dms-upload/config/config.default.js: cdnDir、cdnPrefix
# 建议改写dms-upload与自己公司的CDN、云存储等结合,或者独立部署一台服务器,通过lsyncd做实时文件同步
> git clone https://github.com/gavin1995/dms-upload.git # 获取dms-upload项目
> yarn # npm install
> yarn start # npm run start
# 有任何问题可以加最下面的微信群
# 获取模块数据
# 通过dms平台的【运营配置】->【数据管理】->【模块列表】->【编辑模块数据】
# 获取到请求前缀与唯一标示,拼装在一起即可发起GET请求
> git clone https://github.com/gavin1995/dms-api.git # 获取dms-api项目
> yarn # npm install
> yarn start # npm run start
# 有任何问题可以加最下面的微信群
# 在需要用到DMS的项目里面执行
> yarn add dms-fetch # npm install --save dms-fetch
在DMS中配置【开发配置】->【模块管理】中配置【关联审核地址】
地址支持参数匹配,如:
# 配置模块是使用了city参数,则地址可以配为
https://your-app.com?_c={city} # 选择参数不同时,跳转的审核地址也会不一样
> yarn dev # npm run dev 编译后请替换public里相关文件,并修改config/manifest.json
直接利用nginx将相关目录映射出去
使用lsyncd将相关目录同步到线上相关CDN机器、云存储等(有些CDN需要强刷,目前DMS原生支持Azure CDN强刷)
const { refreshRes } = require('../util/azure'); // 10行左右
await refreshRes(fileUrl); // 51行左右
2.配置Azure CDN相关配置:dms-upload/app/util/azure.js
dms自身有Schema自动保存功能,重新进入页面(刷新)即可,也可以打开控制台,每次对Schema的修改都会打印到浏览器的控制台。
dms-fetch只是简单做了数据连接拼装的事情,建议直接将相关使用到的代码写入自己项目,统一请求处理,统一错误处理。
对于用什么存储原始数据不是很重要,Mysql对于多数开发更加友好易用,且在后台配置数据时不需要过多地考虑性能问题。
当然有需要的同学,可以直接将相关数据字段改为JSON。
我非常欢迎你的贡献,你可以通过以下方式和我一起共建 😃:
dms
。dms
的代码(注意:提交前请先执行yarn build
产出可直接start启动的代码)。