关于分布式缓存:DawnSql解决SAAS的痛点

SAAS 零碎的痛点1、大客户定制化水平高2、客户对本身数据安全的担心,如何避免数据的泄露也滥用DawnSql 的解决方案家喻户晓,软件 = 程序 + 数据。 如果客户的数据须要上传到 SAAS 厂商的服务器,那么 SAAS 厂商只须要对相应的数据设置用户组,并对这个用户组设置相应的权限,就能够将该用户组的权限,发给客户,客户就能够依据本人的理论需要来批改、扩大相应的性能!客户对本身数据安全的担心。客户只须要将本人的数据依据 SAAS 厂商提供的表格局部署到 DawnSql中,同时设置好用户组权限,SAAS厂商就能够应用这个用户组来拜访数据,用户间接应用 SAAS厂商提供的服务即可。DawnSql 例子所有的例子来自于,NorthWind 实例数据库。 1、设置配置文件1.1、设置 consistentId,如果是集群的话,每个节点的 consistentId 应该是不一样,这个属性能够不设置。(不过咱们倡议设置)<property name="consistentId" value="dawn_node"></property>1.2、设置超级管理员的 root token <!-- 超级管理员的 root token, 用户能够间接来设置一个 root token --> <!-- 本例中 root token 为 dafu --><property name="root_token" value="dafu"/>1.3、用户是否实现了 log 事务接口。默认是没有实现,这个须要用户依据本人的理论需要来实现。<!-- 设置实现 log 事务接口的类 --><!--<property name="myLogCls" value="org.gridgain.smart.logClient.MyLogTransactionClient"/>-->1.4、是否实现了初始化后就执行的办法,默认是没有实现<!-- 设置启动的时候,初始化 rpc 服务器 --><!-- org.dawn.rpc.MyRpcStartImpl 是实现了 IDawnSqlStart 接口的类 --><!-- 不设置则不启动这个服务,具体代码能够参看开源的例子 --><!--<property name="startAppCls" value="org.dawn.rpc.MyRpcStartImpl"/>-->1.5、创立表的模板 (这个是必须要设置的)例子中设置了两个模板:base 模板:复制模式,反对事务manage 模板:分区模式,同一份数据,在集群中备份 3 次,反对事务 <!-- 创立表的模板 --><property name="templateConfiguration"> <map key-type="java.lang.String" value-type="org.apache.ignite.configuration.TableTemplateConfiguration"> <entry key="base"> <bean class="org.apache.ignite.configuration.TableTemplateConfiguration"> <property name="templateValue" value="template=REPLICATED,ATOMICITY=TRANSACTIONAL"></property> <property name="description" value="复制模式,来保留数据!"></property> </bean> </entry> <entry key="manage"> <bean class="org.apache.ignite.configuration.TableTemplateConfiguration"> <property name="templateValue" value="template=partitioned,backups=3,ATOMICITY=TRANSACTIONAL"></property> <property name="description" value="分片模式,来保留数据!"></property> </bean> </entry> </map></property>2、创立表-- 1、产品类型表CREATE TABLE IF NOT EXISTS public.Categories ( -- 产品类型ID CategoryID INTEGER NOT NULL auto, -- 产品类型名 CategoryName VARCHAR(15) NOT NULL, -- 类型阐明 Description VARCHAR, -- 产品样本 Picture VARCHAR, PRIMARY KEY (CategoryID)) WITH "template=manage";-- 2、 顾客信息表CREATE TABLE IF NOT EXISTS public.Customers ( -- 客户ID CustomerID VARCHAR(5) NOT NULL, -- 所在公司名称 CompanyName VARCHAR(40) NOT NULL, -- 客户姓名 ContactName VARCHAR(30), -- 客户头衔 ContactTitle VARCHAR(30), -- 联系地址 Address VARCHAR(60), -- 所在城市 City VARCHAR(15), -- 所在地区 Region VARCHAR(15), -- 邮编 PostalCode VARCHAR(10), -- 国家 Country VARCHAR(15), -- 电话 Phone VARCHAR(24), -- 传真 Fax VARCHAR(24), PRIMARY KEY (CustomerID)) WITH "template=manage";-- 3、 产品类别表CREATE TABLE IF NOT EXISTS public.Products ( -- 产品ID ProductID INTEGER NOT NULL, -- 产品名称 ProductName VARCHAR(40) NOT NULL, -- 供应商ID SupplierID INTEGER, -- 类型ID CategoryID INTEGER, -- 数量 QuantityPerUnit VARCHAR(20), -- 单价 UnitPrice DECIMAL(10,4) DEFAULT 0, -- 库存数量 UnitsInStock SMALLINT(2) DEFAULT 0, -- 订购量 UnitsOnOrder SMALLINT(2) DEFAULT 0, -- 再次订购量 ReorderLevel SMALLINT(2) DEFAULT 0, -- 停止 Discontinued BIT NOT NULL DEFAULT 0, PRIMARY KEY (ProductID)) WITH "template=manage";-- 4、 运货商CREATE TABLE IF NOT EXISTS Shippers ( -- 运货商ID ShipperID INTEGER NOT NULL auto, -- 公司名称 CompanyName VARCHAR(40) NOT NULL, -- 联系电话 Phone VARCHAR(24), PRIMARY KEY (ShipperID)) WITH "template=manage";-- 5、 供应商表 CREATE TABLE IF NOT EXISTS Suppliers ( -- 地区形容 SupplierID INTEGER NOT NULL, -- 供应商姓名 CompanyName VARCHAR(40) NOT NULL, -- 联系人 ContactName VARCHAR(30), -- 联系人职务 ContactTitle VARCHAR(30), -- 地址 Address VARCHAR(60), -- 城市 City VARCHAR(15), -- 销售大区域 Region VARCHAR(15), -- 邮政编码 PostalCode VARCHAR(10), -- 国家 Country VARCHAR(15), -- 联系电话 Phone VARCHAR(24), -- 传真 Fax VARCHAR(24), -- 首页 HomePage VARCHAR, PRIMARY KEY (SupplierID)) WITH "template=manage";-- 6、 雇员表,寄存员工的一些根本信息CREATE TABLE IF NOT EXISTS Employees ( -- 员工编号 EmployeeID INTEGER NOT NULL, -- 员工姓 LastName VARCHAR(20) NOT NULL, -- 员工名 FirstName VARCHAR(10) NOT NULL, -- 头衔 Title VARCHAR(30), -- 尊称 TitleOfCourtesy VARCHAR(25), -- 出生日期 BirthDate DATETIME, -- 雇用日期 HireDate DATETIME, -- 家庭地址 Address VARCHAR(60), -- 所在城市 City VARCHAR(15), -- 所在地区 Region VARCHAR(15), -- 邮编 PostalCode VARCHAR(10), -- 国家 Country VARCHAR(15), -- 住宅电话 HomePhone VARCHAR(24), -- 分机 Extension VARCHAR(4), -- 照片 Photo VARCHAR, -- 备注 Notes VARCHAR NOT NULL, -- 下级 ReportsTo VARCHAR, -- 照片门路 PhotoPath VARCHAR(255), -- 工资 Salary FLOAT, PRIMARY KEY (EmployeeID)) WITH "template=manage";-- 7、 雇员销售区域表CREATE TABLE EmployeeTerritories ( -- ID ID INTEGER NOT NULL auto, -- 员工编号 EmployeeID INTEGER NOT NULL, -- 区域代号 TerritoryID VARCHAR(20) NOT NULL, PRIMARY KEY (ID)) WITH "template=manage";-- 8、 销售小区域表CREATE TABLE Territories ( -- 地区编号 TerritoryID VARCHAR(20) NOT NULL, -- 地区形容 TerritoryDescription VARCHAR(50) NOT NULL, -- 地区编号 RegionID INTEGER NOT NULL, PRIMARY KEY (TerritoryID)) WITH "template=manage";-- 9、 订单详情表CREATE TABLE OrderDetails ( -- 订单编号 OrderID INTEGER NOT NULL, -- 产品编号 ProductID INTEGER NOT NULL, -- 单价 UnitPrice DECIMAL(10,4) DEFAULT 0, -- 订购数量 Quantity SMALLINT(2) DEFAULT 1, -- 折扣 Discount REAL(8,0) NOT NULL, PRIMARY KEY (OrderID, ProductID)) WITH "template=manage,affinity_key=ProductID";-- 10、 订单表CREATE TABLE IF NOT EXISTS Orders ( -- 订单编号 OrderID INTEGER NOT NULL, -- 客户编号 CustomerID VARCHAR(5), -- 员工编号 EmployeeID INTEGER, -- 订购日期 OrderDate DATETIME, -- 预计达到日期 RequiredDate DATETIME, -- 发货日期 ShippedDate DATETIME, -- 运货商 ShipVia INTEGER, -- 运费 Freight DECIMAL(10,4) DEFAULT 0, -- 货主姓名 ShipName VARCHAR(40), -- 货主地址 ShipAddress VARCHAR(60), -- 货主所在城市 ShipCity VARCHAR(15), -- 货主所在地区 ShipRegion VARCHAR(15), -- 货主邮编 ShipPostalCode VARCHAR(10), -- 货主所在国家 ShipCountry VARCHAR(15), PRIMARY KEY (OrderID)) WITH "template=manage";3、导入数据在 DawnSql 中导入数据有两种形式。 ...

February 25, 2023 · 4 min · jiezi