精华内容
下载资源
问答
  • 本文研究内容主要包括数据库构建和算法研究两个方面,主要内容如下: (1)中文唇语识别数据集 LRW-1000 构建:考虑到目前关于中文唇语识别 研究尚无一个基准数据库,为了给未来中文唇语识别研究提供一个...
  • 主要研究方向是工程设计、生物(特别是人类基因组)数据库、文档及文本数据库等新兴应用中的数据库建模。设计和集成,此外,他对知识表示、数据挖掘和知识发现等也非常感兴趣。 目录 封面 -15 封底 -14 扉页 -13 ...
  • 翻译过程中,译者感到此言不虚:作者从数据库的基本概念到数据库建模,从如何运用规范化原则到如何做成实际的数据库表,从如何保护数据库完整性到如何提高数据库的性能,从数据库的安全机制到并发事务控制,从...
  • (PS 1:考虑到内容的重复度和读者一定会懂得Google,对于部分的内容,我只编写标题。) (PS 2:部分内容可以在书上找到对应的内容,我只会给个书名) (PS 3:我在寒冷的北方杭州,写下了此指南) Phodal手把手...
  • 构建数据模型时,需要考虑数据一致性、读取速度以及更新速度等。在目前数据模型中主要包括两种:嵌入式和引用式。  嵌入式  嵌入式模型也就是将子文档以字段形式添加到文档中。以博客为例,一篇博客包括...

      在构建数据模型时,需要考虑数据的一致性、读取速度以及更新速度等。在目前的数据模型中主要包括两种:嵌入式和引用式。

      嵌入式

        嵌入式模型也就是将子文档以字段的形式添加到文档中。以博客为例,一篇博客包括:标题、内容、标签、作者姓名和评论,评论又包括评论作者、内容以及时间。评论是一个完整的文档,并且以子文档的形式嵌入到博客中。格式如下:

        

    {
         "_id":"" ,         
        "title":"",
        "body":"",
         "author":"",
         "tags":[
                   "Tag1"
                   "Tag2"
                    "Tag3"   
      ],
          "createDate":,
         "comments":[
           {
            "body":"",
           "author":"",
            "createDate":""
    }
    ]}    
    

      

        嵌入式模型可以在获取博客相关的内容时,一次获取,减少了与数据库的交互。单文档操作可以保证数据要么执行成功要么失败,对于数据的一致性来说也是一种很好的体验。

      引用式

        所谓的引用式就是只将子文档的id嵌入到文档中,并且子文档以文档的形式保存到集合中。格式如下:

        

    {
         "_id":"" ,         
        "title":"",
        "body":"",
         "author":"",
         "tags":[
                   "Tag1"
                   "Tag2"
                    "Tag3"   
      ],
         "createDate":,
         "comments":[
            "comment_id1",
           "comment_id2",
            "comment_id3"
    ]}    
    

      

        在读取数据时,在读取博客内容后,通过博客中保存的评论id,再次从评论集合中获取所有对该博客的评论,在更新博客的评论时,只需修改博客评论即可。或者在搜索评论时,无需通过搜索博客来筛选。这样会大大提高操作效率。

      模型使用决策

        在选择数据库的模型来说主要考虑一下几点:

        1、如果在访问数据时只通过一种方式,并且在频繁的访问,具有强烈的数据一致性。可以通过嵌入式在实现。

        2、对数据的访问形式具有多种。例如博客中有许多评论可以通过博客来搜索评论,也可以通过评论的作者进行搜索。

        3、一次修改可以实现多个文档的修改可以通过引用式实现。例如人员信息中包含住址,住址有包含多项内容。可以在人员信息中只包含地址文档的id。

        4、文档与子文档具有一对多的关系时可以使用引用式实现。因为随着数据的不断增多,内存消耗更多。如果使用嵌入式,可能没法保证将整个文档一次获取,造成缺页现象,对读取数据造成影响。在更新性能上也会出现影响,由于一个子文档可能关联多个文档,引用式可以保证一次更新多个文档得到修改。提高了数据操作效率。

        5、文档与子文档存在多对多关系时,使用引用式可以减少数据冗余。如果使用嵌入式,一篇博客具有多个标签,一个标签可能有多篇文档。随着数据的不断增加,博客中不断有大量的标签重复,这会导致出现大量的冗余标签数据。同时在更新标签信息时也会由于大量的博客文档使用了标签,需要对每个文档进行更新,降低了更新效率。使用引用式可以降低数据冗余,提高更新效率,因为只需更新标签文档信息即可。

    转载于:https://www.cnblogs.com/youzhongmin/p/8390722.html

    展开全文
  • 防止SQL注入–确保使用ORM或准备好语句,而不要使用字符串连接来构建查询。 否则,恶意行为者可以在您查询中注入任何内容,然后将其转换为DROP DATABASE查询,或更糟糕是,该查询会渗漏所有数据。 支持传输...

    防止SQL注入–确保使用ORM或准备好的语句,而不要使用字符串连接来构建查询。

    否则,恶意行为者可以在您的查询中注入任何内容,然后将其转换为DROP DATABASE查询,或更糟糕的是,该查询会渗漏所有数据。

    支持传输中的加密–应用程序的驱动程序配置通常必须支持此加密,例如,通过信任特定的服务器证书。

    即使在同一数据中心内,未加密的通信也是一个重大风险,这就是为什么数据库在传输过程中支持加密的原因。(您还应该考虑静态加密,但这更多是Ops任务)

     

    在应用程序级别具有审核日志–从安全性和合规性的角度来看,“谁做了什么”是一个非常重要的问题。

    而且,没有任何本机数据库功能可以始终如一地回答“谁”问题-由应用程序管理用户。因此,构建一个审计跟踪层,记录谁对哪些实体/表进行了哪些更改。

    如果你在学习C/C++的过程中遇到了问题,可以来加入小编的企鹅圈问小编哦~小编很热情的(●’◡’●)

    考虑对敏感数据进行记录级加密–具有访问权限(或恶意获得访问权限)的人员可以完全转储数据库。这就是数据泄露的发生方式。

     

    敏感数据(例如健康数据,支付数据,甚至API密钥,机密或令牌)可以通过使用应用程序管理的密钥进行加密来受益,因此仅访问数据库就不会泄露该数据。

    通常用于信用卡的另一种选择是令牌化,它将加密责任转移给令牌化提供者。管理密钥很困难,但是即使是基本方法也总比没有好。

    安全通常被视为“操作”责任,这导致许多工具可以尝试解决上述问题而不接触应用程序-Web应用程序防火墙,用于数据库访问监视的启发式方法,尝试提取当前用户等但是,应用程序是其中许多保护措施的正确选择(尽管当然不是唯一的选择),并且作为开发人员,我们需要意识到风险和最佳实践。

    展开全文
  • InnoDB不将表的内容保存到数据库目录中,mysqlhotcopy只适合MyISAM表)。 3. 如果mysqld在运行则停止,然后用--log-bin[=file_name]选项来启动。二进制日志文件中提供了 执行mysqldump之后对数据库的更改进行复制所...
  • MySQL 数据库 之 冷备份前言一、数据库备份类型二、数据库备份的内容三、 MySQL 数据库 之 冷备份1、环境准备2、备份要求3、备份流程 前言 本环境是基于 Centos 7.8 系统构建MySQL-5.7.14 具体构建,请参考 MySQL-...

    前言

    本环境是基于 Centos 7.8 系统构建MySQL-5.7.14
    具体构建,请参考 MySQL-5.7.14 环境构建

    备份是系统中需要考虑的最重要的事项,虽然他们在系统的整个规划,开发和测试过程中甚至占不到1%,看似不太重要且默默无闻的工作只有到恢复的时候才能真正体现出 其重要性,任何数据的丢失与尝试见的数据down机,都是不可以被接收的。数据库备份也同样重要,接下来我们将介绍MySQL数据库的策略。


    一、数据库备份类型

    备份的分类

    1、热备份、温备份、冷备份 (根据服务器状态)

    • 热备份:读、写不受影响;
    • 温备份:仅可以执行读操作;
    • 冷备份:离线备份;读、写操作均中止;

    2、物理备份与逻辑备份 (从对象来分)

    • 物理备份:复制数据文件;
    • 逻辑备份:将数据导出至文本文件中;

    3、完全备份、增量备份、差异备份 (从数据收集来分)

    • 完全备份:备份全部数据;
    • 增量备份:仅备份上次完全备份或增量备份以后变化的数据;
    • 差异备份:仅备份上次完全备份以来变化的数据

    备份策略
    在这里插入图片描述
    优劣势对比
    在这里插入图片描述

    逻辑备份的优缺点

    1、逻辑备份的优点:

    • 在备份速度上两种备份要取决于不同的存储引擎
    • 物理备份的还原速度非常快。但是物理备份的最小粒度只能做到表
    • 逻辑备份保存的结构通常都是纯ASCII的,所以我们可以使用文本处理工具来处理
    • 逻辑备份有非常强的兼容性,而物理备份则对版本要求非常高
    • 逻辑备份也对保持数据的安全性有保证

    2、逻辑备份的缺点:

    • 逻辑备份要对RDBMS产生额外的压力,而裸备份无压力
    • 逻辑备份的结果可能要比源文件更大。所以很多人都对备份的内容进行压缩
    • 逻辑备份可能会丢失浮点数的精度信息

    二、数据库备份的内容

    • 数据文件
    • 日志文件(比如事务日志,二进制日志)
    • 存储过程,存储函数,触发器
    • 配置文件(十分重要,各个配置文件都要备份)
    • 用于实现数据库备份的脚本,数据库自身清理的Crontab等……

    三、 MySQL 数据库 之 冷备份

    1、环境准备

    两台基于Centos 系统的MySQL-7.5.14 服务器
    node01、node02

    2、备份要求

    要求:将node01的MySQL数据库所有数据备份到node02的数据库服务器上,并能够确保备份数据在node02服务器上的可用性

    3、备份流程

    查看node01节点服务器数据库信息

    mysql> use db1;
    Database changed
    mysql> show tables;
    +---------------+
    | Tables_in_db1 |
    +---------------+
    | fruits        |
    +---------------+
    1 row in set (0.00 sec)
    
    mysql> select * from fruits;
    +------+------+------------+---------+
    | f_id | s_id | f_name     | f_price |
    +------+------+------------+---------+
    | a1   |  101 | apple      |    5.20 |
    | a2   |  103 | apricot    |    2.20 |
    | b1   |  101 | blackberry |   10.20 |
    | b2   |  104 | berry      |    7.60 |
    | b5   |  107 | xxxx       |    3.60 |
    | bs1  |  102 | orange     |   11.20 |
    | bs2  |  105 | melon      |    8.20 |
    | c0   |  101 | cherry     |    3.20 |
    | l2   |  104 | lemon      |    6.40 |
    | m1   |  106 | mango      |   15.60 |
    | m2   |  105 | xbabay     |    2.60 |
    | m3   |  105 | xxtt       |   11.60 |
    | o2   |  103 | coconut    |    9.20 |
    | t1   |  102 | banana     |   10.30 |
    | t2   |  102 | grape      |    5.30 |
    | t4   |  107 | xbababa    |    3.60 |
    +------+------+------------+---------+
    16 rows in set (0.00 sec)
    
    mysql> 
    

    node01节点,开始打包数据库备份文件

    # 停止mysqld服务
    [root@mysql-yum ~]# systemctl stop mysqld
    # 打包文件
    [root@mysql-yum ~]# cd  /var/lib/mysql
    [root@mysql-yum mysql]# ll
    total 110660
    -rw-r-----. 1 mysql mysql       56 Jan 14 13:38 auto.cnf
    -rw-------. 1 mysql mysql     1679 Jan 14 13:38 ca-key.pem
    -rw-r--r--. 1 mysql mysql     1074 Jan 14 13:38 ca.pem
    -rw-r--r--. 1 mysql mysql     1078 Jan 14 13:38 client-cert.pem
    -rw-------. 1 mysql mysql     1679 Jan 14 13:38 client-key.pem
    drwxr-x---  2 mysql mysql       56 Jan 16 17:30 db1
    -rw-r-----  1 mysql mysql      309 Jan 16 17:34 ib_buffer_pool
    -rw-r-----. 1 mysql mysql 12582912 Jan 16 17:34 ibdata1
    -rw-r-----. 1 mysql mysql 50331648 Jan 16 17:34 ib_logfile0
    -rw-r-----. 1 mysql mysql 50331648 Jan 14 13:38 ib_logfile1
    drwxr-x---. 2 mysql mysql     4096 Jan 14 13:38 mysql
    drwxr-x---. 2 mysql mysql     8192 Jan 14 13:38 performance_schema
    -rw-------. 1 mysql mysql     1679 Jan 14 13:38 private_key.pem
    -rw-r--r--. 1 mysql mysql      451 Jan 14 13:38 public_key.pem
    -rw-r--r--. 1 mysql mysql     1078 Jan 14 13:38 server-cert.pem
    -rw-------. 1 mysql mysql     1675 Jan 14 13:38 server-key.pem
    drwxr-x---. 2 mysql mysql     8192 Jan 14 13:38 sys
    [root@mysql-yum mysql]# tar czf /opt/mysql_datafile.bak.tar.gz *
    [root@mysql-yum mysql]# ll /opt/
    total 1348
    -rw-r--r-- 1 root root 1378773 Jan 16 17:42 mysql_datafile.bak.tar.gz
    # 拷贝文件
    [root@mysql-yum mysql]# scp /opt/mysql_datafile.bak.tar.gz 192.168.5.12:/opt/
    

    node02节点开始,回复数据

    # 查看备份数据包
    [root@mysql-rpm ~]# ll /opt/mysql_datafile.bak.tar.gz 
    -rw-r--r-- 1 root root 1378773 Jan 16 17:43 /opt/mysql_datafile.bak.tar.gz
    # 停止mysqld服务
    [root@mysql-rpm ~]# systemctl stop mysqld
    # 删除原有的mysqld服务数据存放目录的文件
    [root@mysql-rpm ~]# cd /var/lib/mysql
    [root@mysql-rpm mysql]# rm -rf ./*
    # 解压备份数据到mysqld服务数据存放目录
    [root@mysql-rpm mysql]# tar xf /opt/mysql_datafile.bak.tar.gz -C /var/lib/mysql
    [root@mysql-rpm mysql]# ll
    total 110660
    -rw-r----- 1 mysql mysql       56 Jan 14 13:38 auto.cnf
    -rw------- 1 mysql mysql     1679 Jan 14 13:38 ca-key.pem
    -rw-r--r-- 1 mysql mysql     1074 Jan 14 13:38 ca.pem
    -rw-r--r-- 1 mysql mysql     1078 Jan 14 13:38 client-cert.pem
    -rw------- 1 mysql mysql     1679 Jan 14 13:38 client-key.pem
    drwxr-x--- 2 mysql mysql       56 Jan 16 17:30 db1
    -rw-r----- 1 mysql mysql      309 Jan 16 17:34 ib_buffer_pool
    -rw-r----- 1 mysql mysql 12582912 Jan 16 17:34 ibdata1
    -rw-r----- 1 mysql mysql 50331648 Jan 16 17:34 ib_logfile0
    -rw-r----- 1 mysql mysql 50331648 Jan 14 13:38 ib_logfile1
    drwxr-x--- 2 mysql mysql     4096 Jan 14 13:38 mysql
    drwxr-x--- 2 mysql mysql     8192 Jan 14 13:38 performance_schema
    -rw------- 1 mysql mysql     1679 Jan 14 13:38 private_key.pem
    -rw-r--r-- 1 mysql mysql      451 Jan 14 13:38 public_key.pem
    -rw-r--r-- 1 mysql mysql     1078 Jan 14 13:38 server-cert.pem
    -rw------- 1 mysql mysql     1675 Jan 14 13:38 server-key.pem
    drwxr-x--- 2 mysql mysql     8192 Jan 14 13:38 sys
    # 启动mysqld服务
    [root@mysql-rpm mysql]# systemctl start mysqld
    [root@mysql-rpm mysql]# netstat -lnutp | grep mysqld
    tcp6       0      0 :::3306                 :::*                    LISTEN      2135/mysqld 
    

    node02节点验证备份效果

    [root@mysql-rpm mysql]# mysql -uroot -p123456
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 2
    Server version: 5.7.14 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db1                |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    5 rows in set (0.00 sec)
    
    mysql> use db1;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> show tables;
    +---------------+
    | Tables_in_db1 |
    +---------------+
    | fruits        |
    +---------------+
    1 row in set (0.00 sec)
    
    mysql> select * from fruits;
    +------+------+------------+---------+
    | f_id | s_id | f_name     | f_price |
    +------+------+------------+---------+
    | a1   |  101 | apple      |    5.20 |
    | a2   |  103 | apricot    |    2.20 |
    | b1   |  101 | blackberry |   10.20 |
    | b2   |  104 | berry      |    7.60 |
    | b5   |  107 | xxxx       |    3.60 |
    | bs1  |  102 | orange     |   11.20 |
    | bs2  |  105 | melon      |    8.20 |
    | c0   |  101 | cherry     |    3.20 |
    | l2   |  104 | lemon      |    6.40 |
    | m1   |  106 | mango      |   15.60 |
    | m2   |  105 | xbabay     |    2.60 |
    | m3   |  105 | xxtt       |   11.60 |
    | o2   |  103 | coconut    |    9.20 |
    | t1   |  102 | banana     |   10.30 |
    | t2   |  102 | grape      |    5.30 |
    | t4   |  107 | xbababa    |    3.60 |
    +------+------+------------+---------+
    16 rows in set (0.00 sec)
    
    mysql> 
    

    备份数据完成!!!

    展开全文
  • 他最热衷是逻辑与物理数据库的设计、 数据库与Java应用程序集成、查询优化器,以及与性能管理和优化相关所有方面。他还是Trivadis性能团队和OakTable 网站核心成员。.  童家旺 安徽芜湖人。毕业于上海电力...
  • 考虑动态构建查询以确保占位符数与表和CSV文件格式匹配.那么只需确保您的表格和CSV文件是正确的,而不是检查您输入的内容是否正确?代码中的占位符.以下示例假定> CSV文件包含第一行中的列名称>已建立连接>文件名是...

    请考虑动态构建查询以确保占位符数与表和CSV文件格式匹配.那么只需确保您的表格和CSV文件是正确的,而不是检查您输入的内容是否正确?代码中的占位符.

    以下示例假定

    > CSV文件包含第一行中的列名称

    >已建立连接

    >文件名是test.csv

    >表名是MyTable

    > Python 3

    ...

    with open ('test.csv', 'r') as f:

    reader = csv.reader(f)

    columns = next(reader)

    query = 'insert into MyTable({0}) values ({1})'

    query = query.format(','.join(columns), ','.join('?' * len(columns)))

    cursor = connection.cursor()

    for data in reader:

    cursor.execute(query, data)

    cursor.commit()

    如果文件中未包含列名:

    ...

    with open ('test.csv', 'r') as f:

    reader = csv.reader(f)

    data = next(reader)

    query = 'insert into MyTable values ({0})'

    query = query.format(','.join('?' * len(data)))

    cursor = connection.cursor()

    cursor.execute(query, data)

    for data in reader:

    cursor.execute(query, data)

    cursor.commit()

    展开全文
  • 在2015年中国数据库技术大会上来自360基础架构团队负责人王超为我们分享了Bada构建主从去中心混合架构的NoSQL的内容。包括其背景介绍,混合架构设计的考虑,新架构,经验总结。背景介绍的原有方案包括百亿数据面临的...
  • 系统主要包括以下模块:后台管理系统:...开发问题:为了实现在线编辑和插入图片,综合考虑下集成了kingeditor编辑器,考虑到图片要过多,会导致服务器庞大,我是用Linux建造了一个FTP服务器来独立管理商品图片;前台
  • 在Oracle公司,Kyte专门负责Oracle数据库,他任务是帮助使用Oracle数据库的客户,并与他们共同设计和构建系统,或者对系统进行重构和调优。在进入Oracle公司之前,Kyte是一名系统集成人员,主要为美国军方和政府...
  • 考虑动态构建查询以确保占位符数与表和CSV文件格式匹配.那么只需确保您的表格和CSV文件是正确的,而不是检查您输入的内容是否正确?代码中的占位符.以下示例假定> CSV文件包含第一行中的列名称>已建立连接>文件名是...
  • 在Oracle公司,Kyte专门负责Oracle数据库,他任务是帮助使用Oracle数据库的客户,并与他们共同设计和构建系统,或者对系统进行重构和调优。在进入Oracle公司之前,Kyte是一名系统集成人员,主要为美国军方和政府...
  • 10.1 数据库的前端缓存区 10.2 使用memcached 10.3 读操作缓存 10.4 写操作缓存 10.5 监控状态 10.6 缓存扩展 第11章 数据库性能优化 11.1 友好状态报告 11.2 正确使用索引 11.3 锁定与等待 11.4 事务...
  • 带有Codeigniter和Bootstrap的内容管理系统(CMS)。 CSZ CMS是一个开源Web应用程序,允许管理网站上的所有内容和设置。 CSZ CMS是在Codeigniter的基础上构建的,并设计了Bootstrap的结构,这应该使您的网站轻松...
  • 概述:数据库注入漏洞,主要是开发人员在过后见代码时,没有对输入边界进行安全考虑,导致攻击者可以通过合法输入点提交一些精心构建的语句,从而欺骗后台数据库对其进行执行,导致数据库信息泄露一种漏洞。...
  • 第1章 绪论 1.1 等待真相 1.2 瓶颈在哪里 1.3 增加带宽 1.4...1.10 页面组件分离 1.11 合理部署服务器 1.12 使用负载均衡 1.13 优化数据库 1.14 考虑可扩展性 1.15 减少视觉等待第2章 数据...
  • 绪论: 找到瓶颈在哪里 ...优化数据库 考虑可扩展性 减少视觉等待     初看标题真没什么新鲜,可是不看绪论,我们能心有优化性能全景么? 常说负载均衡,其实还是有不少玩意:  http
  • 设计考虑事项这里我将介绍一下构建多租户SharePoint2013环境各种注意事项。1)了解SharePoint Server 2013中系统边界和限制有关将其应用于 SharePoint 2013 多租户环境时内容数据库和网站集关键边界和限制...
  • 考虑安全性而构建。 可以防止以下攻击: 蛮力 会话固定, SQL注入 跨站脚本(XSS), 跨站请求伪造(CSRF), 等等。 已在XAMPP for Windows v7.4.3(64位),Chrome v80.0.3987.149(64位)和Firefox v74.0...
  • 前言:数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现...所以,一个成功的数据库架构在高可用设计方面也是需要充分考虑的。本章内容将针对如何构建一个高可用的 MySQL 数据...
  • 使用d2rq第一步

    千次阅读 2018-10-25 17:00:42
    知识图谱项目 经过前期的基本理论研究,目前着手研究具体的构建过程。...它提供了基于RDF的访问关系数据库的内容,而无需复制成RDF存储。(这句话是来自http://d2rq.org/的原话翻译过来的。) 研究它...
  • 我们强烈建议您花一些时间来阅读本自述文件全部内容,然后再开始考虑潜在解决方案。 您可能会发现在尝试查找特定错误之前,复习代码库并深入了解系统会很有用。 介绍 想象一下,您在一个工程团队中,该团队...
  • 而越来越多专业知识的 Blog 的出现,让我们看到了 Blog 更多所蕴涵的巨大的信息价值:不同的 Blog 选择不同的内容,收集和整理成为很多人关注的专业 Blog ——目前越来越多的人获取信息的来源是一些固定的 Blog 。...
  • 注意:该免费数据库不提供经纬度,运营商,行政区等更详细的内容,如果你有更多的需求可以考虑使用他们的收费服务。本包的目的是提供给需求简单,努力没钱的程序员或者老板不舍得掏钱来获取定时更新的IP信息 国家...
  • 因此,我们向客户提供了DWKit的源代码,以便他们可以更改任何可以提高其业务效率的内容。 特征: 拖放式表单生成器 工作流程设计师 React的用户界面(JSX) 基于角色的访问控制 管理面板 支持MSSQL / PosgreSQL /...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 143
精华内容 57
关键字:

数据库构建考虑的内容