‘壹’ 现在主流数据库
主流的数据库有:
1、Mysql
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于Oracle旗下产品。
MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统) 应用软件之一。
2、SQL Server
SQL Server是Microsoft 公司推出的关系型数据库管理系统。
具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。
3、Oracle Database
Oracle Database,是甲骨文公司的一款关系数据库管理系统。
它是在数据库领域一直处于领先地位的产品。系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。
(1)流数据库扩展阅读
数据库的类型
1、关系数据库
关系型数据库,存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。 常见的关系型数据库有Mysql,SqlServer等。
在轻量或者小型的应用中,使用不同的关系型数据库对系统的性能影响不大,但是在构建大型应用时,则需要根据应用的业务需求和性能需求,选择合适的关系型数据库。
2、非关系型数据库
非关系型数据库,指的是分布式的、非关系型的、不保证遵循ACID原则的数据存储系统。非关系型数据库技术与CAP理论、一致性哈希算法有密切关系。
所谓CAP理论,简单来说就是一个分布式系统不可能满足可用性、一致性与分区容错性这三个要求,一次性满足两种要求是该系统的上限。
而一致性哈希算则指的是非关系型数据库在应用过程中,为满足工作需求而在通常情况下产生的一种数据算法,该算法能有效解决工作方面的诸多问题但也存在弊端,即工作完成质量会随着节点的变化而产生波动,当节点过多时,相关工作结果就无法那么准确。
‘贰’ 数据流图与数据库中的数据表
软件生命周期(SDLC)的六个阶段
1、问题的定义及规划
此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
2、需求分析
在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。
3、软件设计
此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。
4、程序编码
此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
5、软件测试
在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
6、运行维护
软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。
是先数据流图(需求分析),再数据库设计(软件设计)
‘叁’ 数据库是记录式文件,还是流式文件
对,是记录式的
‘肆’ 目前流行的数据库有哪些
目前流行,oracle sqlserver mysql, database 等等 mongdb面向对象的。
‘伍’ 关于数据库保存流java流对象
什么》? 哎呀没必要。。
不过可实现的:如下为一个通用的例子:
假设有这么个对象:
import java.io.Serializable;
public class MyObject implements Serializable {
private static final long serialVersionUID = 1L;
private int i;
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
}
//测试 的方法如下
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class test {
public static void main(String[] args) throws IOException,
ClassNotFoundException {
MyObject obj = new MyObject();
obj.setI(4567);
write(Object2Bytes(obj));
// read();
}
public static void write(byte[] b) throws ClassNotFoundException {
System.out.println(b.length);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
try {
Connection con = DriverManager.getConnection("jdbc:odbc:temp");
String sql = "insert into tab values(?)";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setBytes(1, b);
pstmt.execute();
pstmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void read() throws ClassNotFoundException {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
try {
Connection con = DriverManager.getConnection("jdbc:odbc:temp");
String sql = "select * from tab";
PreparedStatement pstmt = con.prepareStatement(sql);
ResultSet res = pstmt.executeQuery();
while (res != null && res.next()) {
byte[] b = res.getBytes("key");
System.out.println(b.length);
MyObject obj = (MyObject) Bytes2Object(b);
System.out.println(obj.getI());
}
pstmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 将对象转换成字节数组
public static byte[] Object2Bytes(Object obj) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
return baos.toByteArray();
}
// 将字节数组转换成为对象
public static Object Bytes2Object(byte[] b) throws IOException,
ClassNotFoundException {
ByteArrayInputStream s = new ByteArrayInputStream(b);
ObjectInputStream ois = new ObjectInputStream(s);
Object obj = ois.readObject();
return obj;
}
}
‘陆’ 什么是流媒体数据库它的发展前景如何
流媒体,一般指音频、视频等,它们以“流”(Stream)的形式在网上传输——个人以为传输过程中的信息状态就是流,任何文件传输时的状态都是流,不只是音频、视频,但是你提到的流媒体数据库指的应该是狭义上的流媒体数据库,即多媒体数据库。传统意义上的数据库没有专门用来存储这种形式文件的,所以产生了这样一个概念。 它跟“云”有异曲同工的妙用。
‘柒’ 几大主流数据库对比
oracle,安全性比较高,性能稳定,但是价格相对来说较其他要贵,一般用来做安全性比较高的企业数据库,如银行,电信系统等
ms-sql,中文操作界面,安全性不如oracle,是一个免费的数据库,所以服务肯定是不如oracle的,ms-sql适合做厂矿企业的数据库,初学者比较容易上手
db2是IBM的数据库,没太用过,也就知道这些了
‘捌’ 如何将文件转成流存入数据库
oracle如下 数据库中提供了两种字段类型 Blob 和 Clob 用于存储大型字符串或二进制数据(如图片)。 Blob 采用单字节存储,适合保存二进制数据,如图片文件。 Clob 采用多字节存储,适合保存大型文本数据。 首先创建一个空 Blob/Clob 字段,再从这个空 Blob/Clob字段获取游标,例如下面的代码: PreparedStatement ps = conn.prepareStatement( " insert into PICTURE(image,resume) values(?,?) " ); // 通过oralce.sql.BLOB/CLOB.empty_lob()构造空Blob/Clob对象 ps.setBlob( 1 ,oracle.sql.BLOB.empty_lob()); ps.setClob( 2 ,oracle.sql.CLOB.empty_lob()); ps.excuteUpdate(); ps.close(); // 再次对读出Blob/Clob句柄 ps = conn.prepareStatement( " select image,resume from PICTURE where id=? for update " ); ps.setInt( 1 , 100 ); ResultSet rs = ps.executeQuery(); rs.next(); oracle.sql.BLOB imgBlob = (oracle.sql.BLOB)rs.getBlob( 1 ); oracle.sql.CLOB resClob = (oracle.sql.CLOB)rs.getClob( 2 ); // 将二进制数据写入Blob FileInputStream inStream = new FileInputStream( " c://image.jpg " ); OutputStream outStream = imgBlob.getBinaryOutputStream(); byte [] buf = new byte [ 10240 ]; int len; while (len = inStream.read(buf) > 0 ) { outStream.write(buf, 0 ,len); } inStream.close(); outStream.cloese(); // 将字符串写入Clob resClob.putString( 1 , " this is a clob " ); // 再将Blob/Clob字段更新到数据库 ps = conn.prepareStatement( " update PICTURE set image=? and resume=? where id=? " ); ps.setBlob( 1 ,imgBlob); ps.setClob( 2 ,resClob); ps.setInt( 3 , 100 ); ps.executeUpdate(); ps.close()
‘玖’ 主流数据库都有哪些
INSERT / DELETE
CREATE / ALERT
差别不大的,都是符合 SQL 标准的。
差异嘛:
数据库函数方面,不同厂家的名字不同。
例如: 取数据库当前时间的。
SQL Server: getdate()
Oracle: sysdate
一些 SQL 标准没有定义得很详细的,不同厂家的语法不同。
例如:触发器的定义。
SQL Server
1> CREATE TRIGGER AfterUpdateTest
2> ON test_trigger_table
3> FOR UPDATE
Oracle
SQL> CREATE OR REPLACE TRIGGER BeforeUpdateTest
2 BEFORE UPDATE ON test_trigger_table
3 FOR EACH ROW
存储过程语言的语法,不同厂家的实现不同。
例如L 赋值语句
SQL Server: SET @a = 1;
Oracle: v_a := 1;
‘拾’ 这次被美国“科技霸凌”的中国数据库《SQL9075 2018 流数据库》国际技术标准究竟强在哪里
长期以来,中国一直被三大“卡脖子”技术束缚——“芯片、操作系统、数据库”。
芯片,自不用说,华为的苦我们都懂的;操作系统,我们刚刚实现了从0到1的过程,路漫漫其修远;而数据库作大众看不见摸不到的技术支撑,很多人不太理解其重要性。在这里,简单科普一下:数据库是上述三大核心技术的核心基础中台、基础核心软件,被称为软件的灵魂、是关键技术皇冠上的明珠,但中国恰恰在该领域的对外技术依赖性最高,这对于大国崛起就很尴尬了,相当于,打开紧箍咒的经我们不会念…
因此,中国在数据库技术领域已经蓄力已久,五年前我们开始了国际标准的研发工作,经过中国专家组五年来的潜心精研、砥砺攻坚,终于在2019年基本明确了在数据库技术标准上已取得突破性进展:由中国主导形成标准的《SQL9075 2018 流数据》在2020年只要顺利通过审议,便可在全球发布、推广及适用。同时,《AI-in-Database 库内人工智能》提案确认由中国主导形成国际标准,正式进入国际标准的撰写及确定阶段。