• 20200508_NoSql——中间件综合小项目练习


    业务需求:NOSQL,非关系型数据库{如何索引,如何排序}

    客户端:


    服务端:

    【1】配置

    【2】API

    【3】XML

    【4】为客户端提供服务

    工程准备

    【1】lib: 存储得依赖JAR包,包括:dom4j

    【2】conf:保存各类配置文件

    【3】data:数据目录,保存各个库、表、索引等记录。mydb:各个表得数据

    功能划分:web工程、Java工程等不同项目划分标准

    【4】包:mydb.server(本地服务)client(客户端)uild(解析)entityutilcore(核心业务)

    part 1:XML得解析和配置

    【1】服务开始---解析配置文件XML

          -端口、

          -数据路径、最大访问量、最小连接数、空闲连接数

    【2】缓存解析得信息道本地

    【3】提供服务:给客户端、API等{通过统一得接口访问}

    【4】设计应用层协议{解析协议相关规则}

    ==========================


    协议的结构:所有的应用场景

    【1】协议的分层:

    【2】请求

         -用户验证

         -解析MYDBSQL

             -DCL:建库,建表,   {

                -^creates+[database|table]s+……$

                建库:create database 库名

                建表:create table 库名:表名  字段1,字段2,…

                }

              -DML:修改数据(增,删,改)

               1:新增数据 put 库名:表名  行名 字段名:值

               2:修改数据:set 库名:表名  行名 字段名:值

               3:删除数据 del 库名:表名  行名

              【举例】 同时修改数据索引等相关操作。

              -DQL:关系型数据库最大的瓶颈在于:查询性能--->索引(数据结构)--->算法模型{服务器,web只是一种表现}

                查询数据()

                a.查询数据:scan 库名:表名 [行名/(行1,行2,….)]

                b.查询数据:get 库名:表名 [【行名:】列名]

              【举例】 同时,需要建立执行查询的计划。【执行计划】

                C.优化查询性能:

                   【1】给数据加索引——用于寻找数据的一种“路标”【1.2】执行计划【有章法的安排接下来的查询工作】;

                   【2】通过缓存来提高查询效率(把数据临时放在内存或者其他地方)

                      --数据变化:对u赢得缓存失效               

                         --经常修改(添加,修改,删除,表结构变动)的数据不适合放缓存

                         --数据量特别大的不适合放缓存

                         --结果不确定的,不适合放缓存

                        

                      --怎么放缓存?

                         --KV格式保存查询数据

                         --如果当前的数据放在缓存当中,通过相同地查询语句以及当前的用户来判断是否需要使用缓存。

                         --当数据变动,缓存失效

    【3】响应    

        -用户验证:分配ID

        -SQL执行结果:

            -DCL:0/1

            -DML:number:1

            -DQL:{行名,列名,字段值,时间戳}——JSON格式

       

       


    建库

         -通常来说:要针对于某个完整的功能,需要多个数据表,而把这些数据表整合起来的数据表的集合:库。

    建表

         -保存数据的最基本单元:表。

    创建检索的索引

         -对数据进行单元的划分,并且可以同时对数据的检索层次进行划分。——帮助快速检索数据。

         -要实现数据检索,同时需要创建索引文件,索引文件可以帮助我们进一步提高检索效率。

    所有的SQL都需要解析,需要一个统一的解析模块。   

    为什么要有统一的解析结果模型:序列化操作。

         -分布式:架构,整个业务流程:写文档。

         -

         -

    数据一致性问题

    【1】多用户访问同一个数据的时候

    【2】多用户修改同一个数据的时候

    【3】多用户操作同一批数据的时候


    经验:边写边侧,保证有效代码!

    --达到项目所想缩写的!

    -设计接口,解析字符串!

    excludes:

    [1]getClass().getResource(fileName):当前调用类所在的同一路径下执行

    [2]getClass().getClassLoader().getResource(fileName);表示只会在 根目录/查找该文件

    应用案例:

    【1】com.n包下有:A.java,b.xml

         -A.getClass()

        

    锁的分类:

    • 公平锁/非公平锁
    • 可重入锁
    • 独享锁/共享锁
    • 互斥锁/读写锁
    • 乐观锁/悲观锁
    • 分段锁
    • 偏向锁/轻量级锁/重量级锁
    • 自旋锁

         -

         -

         -    

    粘包和拆包:大批量数据读取,可能会出现该情况。

         -

         -

        


    SE部分要再整理一遍不熟悉的地方!

    【控制时间,熟练度有了】--【再深入】

    底层+封装

    ---业务

  • 相关阅读:
    Java开发最佳实践(一) ——《Java开发手册》之"编程规约"
    小程序websocket心跳库——websocket-heartbeat-miniprogram
    并发与多线程
    SqlSessionFactory、SqlSessionFactoryBean、SqlSession和SqlSessionTemplate的不解姻缘系列之一(总体阐述)
    全网最通俗易懂理清mybatis中SqlSession、SqlSessionTemplate、SessionFactory和SqlSessionFactoryBean之间的关系
    java代码之美(16) ---Java8 Optional
    Java基础——多线程
    代码简洁之道(判断篇)
    Spring Boot 入门
    Mybatis Plus入门
  • 原文地址:https://www.cnblogs.com/macro-renzhansheng/p/12939587.html
Copyright © 2020-2023  润新知