顯示具有 ◇資料庫管理 DBA 標籤的文章。 顯示所有文章
顯示具有 ◇資料庫管理 DBA 標籤的文章。 顯示所有文章

2022年6月18日 星期六

SRE, DevOps, K8S, MicroServices, MERN, MongoDB, Domain-Driven Design (DDD)

..
.
1. SRE = Site Reliability Engineering = 網站可靠性工程師 (from Google) 
.


2. DevOps = Dev + Ops
.
SRE is a DevOps.
DevOps is NOT a SRE.
DevOps 並不是一個 "工作職稱",SRE 才是。
.


3. K8S = Kubernetes 是一個可以幫助我們管理微服務(microservices)的系統,他可以自動化地部署及管理多台機器上的多個容器(Container)。
.


4. MicroServices (微服務) : 是一種開發軟體的方法, 有別於 單體式架構(monolithic)。
.


5. MERN = MongoDB, Express.js, React and Node.js
用於開發動態網站和網路應用的 JavaScript 套件組合。它是自由及開放原始碼軟體。
MERN Stack 包含 前端 及 後端. 所以我們又稱 全端。
.


6. MongoDB :
是一種文件導向的資料庫管理系統,用C++等語言撰寫而成,以解決應用程式開發社群中的大量現實問題。MongoDB 由 MongoDB Inc. 於2007年10月開發,2009年2月首度推出,現以伺服器端公共授權(SSPL)分發。
.


7. Domain-Driven Design 領域驅動設計(DDD) :
is an approach to software development that centers the development on programming a domain model that has a rich understanding of the processes and rules of a domain. The name comes from a 2003 book by Eric Evans that describes the approach through a catalog of patterns.

Domain-Driven Design 領域驅動設計(DDD) 是一種基於領域知識來解決複雜商業問題的軟體開發方法論。
.


...


// 2022.06.18(六) AaA

2010年9月12日 星期日

[DBA] 16 SQL commands

. The DML , DDL, DCL, TCL ...

--- The Data Manipulation Language (DML) commands: 
■ SELECT 
■ INSERT 
■ UPDATE 
■ DELETE 
■ MERGE 

 --- The Data Definition Language (DDL) commands: 
■ CREATE 
■ ALTER 
■ DROP 
■ RENAME 
■ TRUNCATE 
■ COMMENT 

 --- The Data Control Language (DCL) commands: 
■ GRANT 
■ REVOKE 

 --- The Transaction Control Language (TCL) commands: 
■ COMMIT 
■ ROLLBACK 
■ SAVEPOINT .

2010年9月6日 星期一

[DBA] Oracle Enterprise Manager

. Oracle Enterprise Manager (Oracle 11gR2) 為了用Web管理Database, 
所以有了Database Control; 
 為了管好Instances,所以有了Application Server Control; 

 為了管理上面兩個再加一點料,所以有了Grid Control; 
 摻在一起,做成撒尿牛丸之後,就是Oracle Enterprise Manager (EM) 了. 

 So, Oracle Enterprise Manager comes in three forms: 
■ Database Control 
■ Application Server Control 
■ Grid Control

2008年6月14日 星期六

[EE_CSIE] 高等資料庫管理系統 ADBMS ProjectD

.
修 梁婷教授 的課,感覺學到很多,很紮實。

昨天終於 DEMO 完 Advanced Database Management System 的 Project
我將我的 ADBMS Project ,命名為 " ProjectD ",

我是設計一個 HIS(Hospital Information System)裡的 Web-based 掛號系統,
本來想要用比較熟悉的 BEA Weblogic Server 10mp1 + Oracle 11g ,
但是用 Notebook 實在很吃力,光開這兩個,就吃完我ㄉ記憶體ㄌ ...
最終還是跟NB妥協ㄌ,用 Tomcat + MySQL 就好,哇哈哈 ...

首先是 Mini-world 的部分,先從需求開始,步驟如下:
1. Requirement (Motivation),
2. SA, System Analysis (Proposal),
3. SD, System Design (System Architecture, Flowchart),
4. Dev, Develop (Implementation),
5. Debug,
6. QA, (Result analysis)

SA : 寫太多 (略)

在設計 Database Schema 時,
正好 K 完 Relational Algebra 跟 Relational Calculus ...
一堆符號彷彿從四處冒出來 ... σ ... ρ ... θ ... #$%#^$&

然後是 正規化(Normalization)的過程,
雖然教到 1st , 2nd , 3th , Boyce-Codd Normal Form , 4th , 5th (第五正規化),
不過老師還蠻仁慈ㄉ,要求到第三正規化就好 ...

針對 ER-model 或是 EER-model (Extended E-R Model) ,
本來是用 ERwin來design,不過後來玩了一下 MySQL Workbench5 以及 DBdesigner4,
感覺 DBdesigner4在設計小系統還真ㄉ是方便到一個不行,
雖然它還是有一些小bug,在我畫 dependency 時 ...

稍微介紹一下,DBdesigner4:(免費的呦!)
http://www.fabforce.net/dbdesigner4/


以下是我設計的 HIS ER-model 初版:

它可以 Show 出 1:1 , 1:n , n:m 的 relation ,
除了 Entity type、Attribute、Relationship 之外,
也可以設計 Weak Enity type、Partial Key、Indentifying Relationship,
EER-model 的 Specialization、Generalization、UNION,
Primary Key 以及 Constraint 顏色分明,跟 UML 的 OOAD 可以配合,
是不是很棒ㄚ!

在 implement 時,J2EE 的 JAAS?
因為用 Tomcat6,用 FORM based Authentication 省了我很多工,

接下來,本來要用到 EJB 的,不過等我 K 完新的EJB3,可能學期早結束了,哈 ...
所以用 JSP + jstl.jar + standard.jar ,

JSP Standard Tag Library (JSTL)
http://www.apache.org/dist/jakarta/taglibs/standard/

拿這個來 POC (Prove Of Concept) 還真是剛剛好,
因為 它就是 "神!"、它就是 "行!"

開發到這邊,真的是覺得 學海無涯 ㄚ~~~
有時候,商業軟體功能很完備,但是常常大材小用,
其實我們沒有用到那麼多的功能,往往不到 30%,
可是每年買 Licenses 以及 MA 卻花很多 $$$ ...
所以 Open Source,還真的是很棒的Group ...

經過一個月,有空就寫程式,下SQL,Debug ...
後來我幾乎忘了我是修資料庫的課、還是修寫程式的課 ... XD
Well, DEMO 終於結束,
接下來,就是見證奇蹟的時刻 ...
ㄜ,不是啦!是準備期末考的時刻 ...

Heap , Hashing (Extendible Hashing / Leaner Hashing) , B-Trees , B+-Trees ,
Algorithms for Query Processing and Optimization ,
Transation、Schedules , Isolation Level ,
Recoverability , Serializability ,
Multiversion Concurrency Control Techniques ,
Recovery Techniques , Lock manager , Deadlock prevention , Starvation ,
Two-Phase Locking (2PL) , Timestamp Ordering ,
Caching , Checkpoint , System log , Fuzzy Checkpointing ...
Deferred Update , UNDO / REDO Recovery , Shadow paging ,
還蠻多要念的 ... 呵呵

2008年1月17日 星期四

[軟體工程] Oracle buy BEA, Sun buy MySQL

. .今早老闆寄的新聞 ^^ . 
 From ZDNet News 

 === Oracle buys BEA Systems === 
The clumsy courtship between Oracle and BEA Systems is over. Oracle said Wednesday that it will acquire BEA for $19.375 a share in cash. The offer puts the value of BEA at roughly $8.5 billion. On a conference call–where Oracle wasn’t taking questions–Oracle CEO Larry Ellison said the deal will offer “greater value to our customers than any other offering in the marketplace.” He named IBM, Microsoft and open source rivals as the competition. http://blogs.zdnet.com/BTL/?p=7610&tag=nl.e539 === Sun acquires MySQL; Adds to its software stack 

=== Sun Microsystems is taking the plunge into the database market with the purchase of open source database developer MySQL for $1 billion ($800 million in cash in exchange for all MySQL stock and assumption of approximately $200 million in options). http://blogs.zdnet.com/BTL/?p=7611&tag=nl.e539

2008年1月16日 星期三

[軟體工程] 甲骨文Oracle同意以85億美元併購BEA

. http://tw.stock.yahoo.com/news_content/url/d/a/080116/1/s8jz.html 甲骨文同意以85億美元併購BEA 2008/01/16 21:09 中央社 (中央社台北2008年1月16日電)根據彭博社報導,全球第三大軟體製造商甲骨文 (ORCL) 在提高價碼,爭取董事會認同後,同意以85億美元併購BEA SystemsInc. (BEAS) 。 甲骨文今天發佈新聞稿表示,該公司將以每股價格大約19.38美元,併購BEA。甲骨文表示,此案應該能在完成併購後的第一個年度,扣除特定費用,挹注每股盈餘達2美分。 BEA去年10月否決甲骨文的惡意併購提案,稱每股17美元「令人不能接受」,但可以接受每股21美元,當時甲骨文表示這樣的價碼太高。 甲骨文盤前交易挫51美分,報20.80美元,該股昨天收在21.31美元。BEA暫停交易。 甲骨文表示,此交易應在年中完成。

2007年11月20日 星期二

[DBA] MySQL基本常用SQL

---------------------------------------- ※ MySQL 使用者管理 SQL 語法: ---------------------------------------- 
  $ mysql -u root //AaA:第一次還沒設密碼時登入用 
  $ mysql -u root -p //AaA:用密碼登入,也可以p後面直接加密碼,不過很容易被別人發現 
  $ mysql --i-am-a-dummy -u root -p //告知我是初學者,刪資料會先被提示 

 mysql> SELECT VERSION(); //AaA:顯示目前MySQL版本 
 mysql> SELECT USER(); //AaA:顯示目前使用者 
 mysql> CREATE USER username; //AaA:建立使用者,會產生沒有任何權限的使用者 username@% 
 mysql> set password for username = password('123456'); //AaA:設定使用者 username@% 的密碼 
 mysql> set password for username = password(); //AaA:將使用者 username@% 的密碼清空 mysql> set password for root@localhost = password('123456'); //AaA:設定使用者 root@localhost 的密碼 
 mysql> GRANT ALL ON *.* TO username; //AaA:給予使用者所有權限(但不包含GRANT權限) 
 mysql> REVOKE all ON *.* FROM username; //AaA:取消使用者所有權限 (*.* 前面*是資料庫,後面*是表格) 
 mysql> GRANT ALL ON *.* TO username IDENTIFIED BY 'password'; //AaA:給予使用者所有權限,並設定使用者密碼 
 mysql> FLUSH PRIVILEGES; //AaA:即時更新權限的更改 
 mysql> DROP USER username; //AaA:刪除使用者,等於執行以下兩個指令 
mysql> DELETE FROM user WHERE User='username'; 
mysql> DELETE FROM db WHERE User='username'; 

--------------------------------------- 
※ MySQL 資料庫管理 SQL 語法: 
--------------------------------------- 
mysql> SHOW DATABASES; //AaA:顯示所有databases 
mysql> USE db_name; //AaA:使用某個database 
 mysql> CREATE DATABASES db_name; //AaA:創建一個database 
 mysql> DROP DATABASE db_name; //AaA:砍掉一個database 

 ------------------------------------ 
※ MySQL 表格管理 SQL 語法: 
------------------------------------ 
mysql> SHOW tables; //AaA:顯示該database的所有table,必須先 USE databasename; 
 mysql> DESC table_name; //AaA:取得tablename的schema,同 describe tablename; 
 mysql> SHOW COLUMNS FROM table_name; //AaA:顯示表格的定義 
 mysql> CREATE TABLE table1 ( id CHAR(200) NOT NULL, KEY index_name (id(10))); //AaA:建立一個以id為索引的table 
 mysql> DROP TABLE table1; //AaA:刪除一個TABLE table1 
 mysql> CREATE TABLE table2 ( id INT NOT NULL, last_name CHAR(30) NOT NULL, first_name CHAR(30) NOT NULL, PRIMARY KEY (id), INDEX name (last_name, first_name)); //AaA:建立一個以id為主鍵,而last_name,first_name為雙索引的table 

 //-- INSERT SQL 語法: 
mysql> INSERT INTO table2(id, last_name, first_name) VALUES(22,'amzshar','liu'); 
mysql> INSERT INTO table2(id, last_name, first_name) VALUES(33,'cathy','chung'); 
mysql> INSERT INTO table2(id, last_name, first_name) VALUES(44,'bruce','lin'); 
mysql> INSERT INTO table2(id, last_name, first_name) VALUES(55,'qing','wang'); 
mysql> INSERT INTO table2(id, last_name, first_name) VALUES(66,'gino','fu'); 
mysql> INSERT INTO table2(id, last_name, first_name) VALUES(77,'annisa','chen'); //AaA插入數筆資料 

 //-- SELECT SQL 語法: 
mysql> SELECT COUNT(*) from table2; //AaA:查出有幾筆資料在 TABLE table2 
 mysql> SELECT * FROM table2 WHERE last_name="amzshar" OR first_name="liu"; //AaA:搜尋方式1
 mysql> SELECT * FROM table2 WHERE last_name LIKE 'amz%'; //AaA:搜尋方式2 
 mysql> select (1+2)*3; //AaA:回應 9 
mysql> select 1 IS NULL, 0 IS NULL, NULL IS NULL; //AaA:回應 0 0 1 
mysql> select 2 BETWEEN 2 AND '3'; //AaA:回應 1 mysql> select ISNULL(1+1); //AaA:回應 0 
mysql> select ISNULL(1/0); //AaA:回應 1 
mysql> select ABS(-23); //AaA:回應 絕對值 32 
mysql> select SQRT(4); //AaA:回應 平方根 2.000000 
mysql> select GREATEST(2,0); //AaA:回應 最大值 2 
 mysql> select SUBSTRING('International',5); //AaA:回應 子字串 'national' mysql> select SUBSTRING('International',5,6); //AaA:回應 子字串 'nation' mysql> select REVERSE('abc'); //AaA:回應 'cba' 
 mysql> select LCASE('International'); //AaA:回應Low Case 'international' 
 mysql> select UCASE('International'); //AaA:回應Upper case 'INTERNATIONAL' 
 mysql> SELECT xx FROM tableD WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 7; //AaA:查出最後7天內的資料 

 //-- UPDATE SQL 語法: 
mysql> update table2 SET last_name='AaA' where id = 22; //-- ALTER SQL 語法: 
mysql> ALTER TABLE table2 ADD ts TIMESTAMP; //AaA:在 TABLE table2 增加一個新TIMESTAMP列 ts 
 mysql> ALTER TABLE table2 DROP COLUMN ts; //AaA:在 TABLE table2 刪除列 ts 

 //-- SHOW 的一些 SQL 語法: 
mysql> SHOW DATABASES; 
mysql> SHOW TABLES [FROM db_name]; 
mysql> SHOW COLUMNS FROM tbl_name [FROM db_name]; 
mysql> SHOW INDEX FROM table2 [FROM db_name]; 
mysql> SHOW GRANTS FOR user xxx; //-- LOCK 的一些 SQL 語法: 
mysql> LOCK TABLES table2 READ, test3 WRITE; 
mysql> SELECT SUM(value) FROM table2 WHERE id= some_id; 
mysql> UPDATE id SET total_value=sum_from_previous_statement where id=some_id; 
mysql> UNLOCK TABLES; 

 //-- INDEX 的一些 SQL 語法: 
mysql> CREATE INDEX index_name ON tbl_name (column(10)); 
mysql> DROP INDEX index_name ON tbl_name


2007年7月14日 星期六

[軟體工程] Oracle 要出 11g 了

資料庫 軟體大廠 Oracle 2007/07/11 在紐約發表其新版資料庫軟體 Oracle 11g。 不過,正式產品聽說要到8月起才會陸續出貨。 甲骨文表示,11g在經濟性、安全性上,都有了更大的進步 (真的是很官方的說法,呵呵...),如可分享備援資料庫的運算資源、提高壓縮效率以提高成本效益,並增強加密範圍,由欄位擴張至表格、索引乃至其他儲存的資料。 據甲骨文伺服器技術部門資深副總裁Andy Mendelsohn透露,第一個上市的會是支援Linux的版本(嗯...因為 Linux 他就是 "神!" 他就是 "行!"),預計在8月份可出貨,但其他作業系統的11g版本,他僅表示會在今年底至明年初之前陸續推出。 此外,增強的Data Guard功能,則可讓企業將備援用的待命(stand-by)資料庫將其閒置的系統資源分享出來,分擔實際運作的生產系統(production system)之工作量(workload),並可讓單一備援資料庫同時負擔數個資料庫的備援工作,Mendelsohn說:「備援資料庫不再只是其他資料庫的複本(copy),而成為一項經濟性的投資,」。 而 MicroSoft 下一版代號「Katmai」的 SQL Server 資料庫訂於2008年推出,主要的設計目標在於改良商業智慧與文件存取的功能。