李志涛

导航

es数据模型及服务化思考

一、es数据模型

online_class索引结构
es结构
依赖库表
唯一字段标识
备注
onclass表
{
"id":52845960, // online_class__id
"bookType":"", // 订课
"bookDateTime":"", // 订课(约课)时间
"classType":"", // 课程类型
"classroom":"", // 进教室的url
"courseId":24329, // 课程id 与courseId重复
"finishType":2, // 完课类型
"isPaidTrail":1, // 是否为付费trail课
"scheduledDateTime":"2018-02-18", // 订课(上课)时间
"shortNotice":6, // 是否为24小时内约课
"status": "BOOKED", // 课程状态
"teacherEnterClassroomDateTime":"2018-02-18", // 老师进入教室的时间
"dbyDocument": "WWWWWW", // 多贝文档
"canUndoFinish": 1, // 是否回撤online_class
"attatchDocumentSuccess": 1, // 关联多贝文档是否成功
"createrId": 732716, // 约课人
"studentChangeTag": 0, //
"twentyFourHourClass":{
"isVisible":1
},
"teacher":{
"id":111111111111111
"realName": "Cassandra Jayne Kellam",
"teacherShowName": "Alexandra AE",
"teacherEmail": "cassandrajkellam@gmail.com",
"teacherTimezone": "Asia/Jakarta",
"name": "" // 来源于user表
// 解释:资格证书代表能上课单元,俗称技能标签
"teacherCertificateCourseIdList": [5102,597767,597803,597804,597816]
},
"lessonList":[ // 教研端获取信息
{ //
"id":"",
"name":"",
"serialNumber":3372799 // lesson唯一编码
"learningCycleId":72310,
"isUnitAssessment":""
}
],
"studentList":[ // (来源家长端)学生信息
{
"id":"", // 学生id
"salesName": "陈小婷",
"chineseLeadTeacherId":"",
"name":"", //学生中文名
"englishName":"", // 学生英文名
"agreeToChangeTeacher":"",
"lifeCycle":"",
"accountType":"",
"birthday":"",
"salesId":"",
"familyId":""
}
],
"course":{
"name": "Trial",
"serialNumber": "T1",
"mode": "ONE_ON_ONE",
"type": "TRIAL",
"sequential": 0,
},
"learningCycle":{
"id":5690,
"unitId":""
},
"assessmentReport":{
"id": 85069,
"url":"",
"readed":"",
"onlineClassId":65830
},
"studentUnitAssessment":{ // 来源于homework DB
"id":176590,
"onlineClassId":2158670, // 在线课程
"submitStatus":"", // 提交状态 {1 已提交,0 未提交}
"submitDateTime":"", //UA提交时间
"auditorId":"", // 审核人
"auditorName":"", // 审核人名称
refillinOpId; //补填人
"refillinOpName":"",//补填人姓名
"updateTime":"";
"isRefillin":""
},
"parentList": [
{
"id":"35566";
"mobile": "130****9870",
"mobileSkey": "1//1493043797480//36bb385ec6dc0008e56c4e43cc6ba30b"
}
],
"mobileSkey": [
"1//15204797932//12825dbf43fe1e7a9be852b2726a3dca"
],
"leads":{
"tmkId": -1, // 学生对应leads的tmk是谁
"ccId": 7632716, // 销售人员
"tmkName": null,
}
}
vipkid.online_class
vipkid.teacher
vipkid.lesson
vipkid.student
vipkid.course
vipkid.assessment_report
vipkid.parent
vipkid.leads
vipkid.learning_cycle
homework.student_unit_assessment
online_class_id
 
       
student索引结构
es结构
依赖库表
唯一字段标识
 
student
{
"id": 2588521,
"birthday": 1293811200000,
"name": "请编辑孩子信息", //学生中文名
"englishName": "Student Name",
"pinyin": "zhouxukun", //拼音
"chineseLeadTeacherId": null //LP的ID
"lifeCycle": "CONTACTED",
"dtype": "Student",
"studentType":"sssg",
"learnProgressList": [
{
"courseId": 597767,
"nextShouldTakeLessonId": null
}
],
"lessonList": [
{
id;
learningCycleId;
name;
serialNumber;
isUnitAssessment;
}
],
"learnCycleList": [
{
id;
unitId;
}
],
"unitList": [
{
id;
levelId;
}
],
"parentList": [
{
"id":"35566";
"mobile": "130****9870",
"mobileSkey": "1//1493043797480//36bb385ec6dc0008e56c4e43cc6ba30b",
"weight" :80,
"relation" :"father",
"sms_status":1,
"email_status":1
}
],
"family":{
"familyIId": 1805713,
"moblile":186028844,
}
}
vipkid.student
vipkid.learning_progress
vipkid.lesson
vipkid.learning_cycle
vipkid.unit
vipkid.parent
   
       
各组整理参考资料
cc组整理:OnlineClass和Student的ES索引结构
教学服务(clt)组整理:ES索引结构
基础服务组整理:onlineclass-es字段
教师端整理:教师端ES online_class索引结构梳理
管理端ES模型梳理

二、宽表需求

clt组整理:宽表需求业务SQL统计   30多个
cc组整理:在线课程页面接口
基础服务组整理:es-api
教师端ES online_class索引结构梳理    宽表需求

三、应该提供怎样搜索服务讨论

存储服务 + 搜索服务 VS 只提供统一存储服务
只提供统一存储服务
优点
  • 避免重复开发,提高人效
  • 存储复用,资源利用率更高
  • 为服务化,业务解耦提供支撑
不足
  • 无法对业务不合理用法统一监控和处理
  • 无法做到查询接口复用
存储服务 + 搜索服务
优点
  • 为服务化,业务解耦提供支撑
  • 搜索DSL语句,统一提供、统一监控,降低因使用不合理的系统风险
  • 相同功能接口复用,提高团队开发效率
不足
  • 业务架构会成为瓶颈,开发资源跟不上,或疲于应对变化需求
  • 灵活性变差,接口变多
 
业务团队RD建议:
  • 如果业务架构服务化(存储服务 + 搜索服务),提供管理平台,可以通过可视化操作编辑灵活DSL语句
  • 只提供存储服务,搜索服务由业务自行服务,这里更灵活,更符合现在业务迭代要求
 
 

posted on 2020-08-11 23:22  李志涛  阅读(373)  评论(0编辑  收藏  举报