• 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
       
           
    各组整理参考资料
    教学服务(clt)组整理:ES索引结构
    基础服务组整理:onlineclass-es字段

    二、宽表需求

    clt组整理:宽表需求业务SQL统计   30多个
    基础服务组整理:es-api

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

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

  • 相关阅读:
    【ASP.NET Web API教程】5.5 ASP.NET Web API中的HTTP Cookie
    【ASP.NET Web API教程】3.3 通过WPF应用程序调用Web API(C#)
    【ASP.NET Web API教程】5.4 ASP.NET Web API批处理器
    【翻译】ASP.NET Web API是什么?
    【ASP.NET Web API教程】2.3.6 创建产品和订单控制器
    《精通ASP.NET MVC 3框架》译者序
    【ASP.NET Web API教程】3 Web API客户端
    委托、事件与匿名方法 — 学习委托最好的资料
    【ASP.NET Web API教程】2.3.3 创建Admin控制器
    【ASP.NET Web API教程】2.3.5 用Knockout.js创建动态UI
  • 原文地址:https://www.cnblogs.com/lizherui/p/13488024.html
Copyright © 2020-2023  润新知