我剛剛得到了一個適用於應用程序的想法,但它涉及到一些數據庫工作和一箇中央服務器。我應該從哪裏學習數據庫?
我從來沒有使用過數據庫或服務器。初學者有哪些建議的數據庫查詢語言?我現在使用的語言是C#,C++,Perl和Python,但我不在乎是否必須學習另一種語言(這總是很有趣)。
- 我應該使用哪種語言?
- 我將如何使用服務器?
- 如果我分發我的程序並在我的網絡上使用計算機作爲服務器,是否會打開安全漏洞?如果是這樣,我該如何處理?
- 而我將如何設置服務器,只需下載安裝程序並運行它?
我剛剛得到了一個適用於應用程序的想法,但它涉及到一些數據庫工作和一箇中央服務器。我應該從哪裏學習數據庫?
我從來沒有使用過數據庫或服務器。初學者有哪些建議的數據庫查詢語言?我現在使用的語言是C#,C++,Perl和Python,但我不在乎是否必須學習另一種語言(這總是很有趣)。
學習SQL。
下載SQLite作爲您的學習服務器。
這會讓你開始。
一旦你學習了SQL,你可以轉到其他問題。
我該如何使用服務器? MySQL或Postgres會是一個不錯的選擇。 Oracle,MS SQL/Server和DB2是很好的選擇。
如果我分發我的程序並在我的網絡中使用計算機作爲服務器,是否會打開安全漏洞?
這是一個很大的話題。從一個廣泛使用的漏洞列表開始。這裏有一些指針:http://homepage.mac.com/s_lott/iblog/architecture/C465799452/E20090124205231/index.html
SQLite不是服務器。 – skypher 2009-02-24 11:33:58
@skypher:這是有爭議的。它提供了SQL服務。它不是一個龐大,複雜,重量級的自由運行過程(或Windows「服務」)。由於它提供了SQL服務,它怎麼不是服務器? – 2009-02-24 12:12:59
我建議你從.NET框架上的C#開始,並使用MS SQL Server。
首先,您將需要get started with databases。
這裏是一個偉大的地方開始MS SQL:http://msdn.microsoft.com/en-us/library/aa256841.aspx
MS SQL Express是人們喜歡你,而你正在學習或評估一個免費版。
Visual Studio也有一個用於學習的express edition。
這將需要您的學習Transact SQL,這是一個SQL的增強。
如果您擔心SQL安全性,那麼有一些good articles。
大多數商業數據庫使用SQL作爲語言,雖然也有其他人我會建議你堅持嘗試和信任的軟件包,如果你傾向於開源陣營,我建議你使用MySQL,如果你有微軟租約,那麼你應該使用SQL Server Express(即免費版)。
我不確定你在問怎樣使用服務器,但是我假設你問的是你如何開發/構建數據庫,使用SQL Server它有一個客戶端程序來管理數據庫,而使用MySQL有一個用於管理的開源PHP工具。
至於安全性,如果數據庫配置正確,數據庫是非常安全的,我建議閱讀關於最終選擇的數據庫平臺的配置文章。
如果您正在開發一個Web應用程序,我建議您開始閱讀Ruby on Rails教程。數據庫如此抽象並且對模型非常有用,以至於SQL幾乎可以完全分解出來,而您只需考慮業務模型。
如果你在一個應用程序的工作,去學習或者一些有約束力的系統或SQL我知道C#有一些系統(LINQ?),可能使生活更輕鬆...
它確實不你選擇哪種編程語言。與數據庫接口的最常見方式是通過SQL,這是一種簡單的語言,它爲大量不同的數據庫提供了一個通用接口。一旦你知道SQL,你可以很容易地使用任何編程語言的數據庫。
最好的開始是一個名爲SQLite的數據庫,它爲存儲在磁盤上簡單文件中的數據提供SQL接口。這意味着您可以創建一個數據庫並開始玩耍並學習SQL,而無需設置真正的數據庫服務器。根據您的應用程序,它甚至可能是您所需要的全部。
問題的最後一部分是不可能回答的。託管在網絡上的任何應用程序都會引發各種安全問題。需要更多的信息,並希望通過學習一些關於數據庫的知識,您可以爲自己回答一些問題。
學習SQL,o'reilly幾乎所有的數據庫工作,SQL服務器,MySQL,Postgree所有這些都是一個很好的開始。 你應該從python開始。 C#會讓你覺得'所以我點擊這裏,這裏和這裏,下一個,下一個,完成,我連接到數據庫',並且當你嘗試使微軟的腳本有點不同時,你將很難計算微軟的wizards已經完成了你的代碼。另一方面,使用C#可能會完成(嚴重但已完成)的工作,這是關於編程的第一條規則,因此,基本上可以做任何你想做的事情(但我建議使用python和mysql)。
關於第二個問題,如果您必須使您的應用程序在線(它只是一個問題),您將始終使用服務器。
關於第三個問題,當你在線工作時,你會經常打開安全漏洞,首先,製作你的程序,然後研究你的安全缺陷。
您應該瞭解數據庫建模,特別是實體關係模型。 SQL只是與關係數據庫交談的技術,而且這很容易,但知道如何設計表以滿足應用程序的數據需求並以便捷的方式(即至少以第二範式)將爲您節省時間很多麻煩。
以E-R Modeling開頭,然後你就可以開始學習SQL了,對於SQL學習資源我真的推薦你SQLZoo: A gentle Introduction to SQL,這是一個非常好的交互式教程。
我同意你需要知道SQL語言,如果你將使用數據庫。一本學習SQL的好書是O'Reilly的Learning SQL, second edition。
在學習使用關係數據庫的基礎知識時,應推遲使用服務器(其中包括避免上述書中使用的MySQL系統)。我同意SQLite將是一個更好的工具,因爲您可以瞭解關係數據庫而不是服務器的管理困難。
我應該使用哪種語言?
Common Lisp如果你是在一個啓發性的經驗和 希望不僅與關係數據庫(SQL),而且 面向對象的人一起工作。
其他語言傾向於只支持RDBMS。
我該如何使用服務器?
我的建議:租用一個便宜的虛擬GNU/Linux服務器,並學習如何使用SSH工作。
如果我分發我的程序並在我的網絡上使用計算機作爲服務器,是否會打開安全漏洞?
也許,也許不是。這取決於你的程序。
你問的問題大致類似於「如果我在我的房子上工作,我能讓盜賊更容易進入嗎?」。
如果是這樣,我該如何處理?
閱讀安全編程和防火牆。
在垃圾收集中使用合理的編程語言,並謹慎處理任何用戶輸入。
而我將如何設置服務器,只需下載安裝程序並運行它?
這比這更復雜一點。這取決於您要使用的操作系統和服務器軟件。
什麼服務器?數據庫服務器(如果您使用的是),Web服務器,您的應用程序服務器,還有其他的東西?
至於「我將如何使用服務器?」問題這可能意味着很多事情。 。 。您是否聽說過「LAMP」(Linux-Apache-MySQL-Php(perl,python))捆綁軟件?
這是一種運行服務器(apache),數據庫(mysql)和您選擇的編程語言的相當普遍的方式。
我在Windows機器上運行Apache和MySQL,並且更喜歡使用Python來完成數據庫事務。使用python與MySql進行交互非常容易,並且可以使用GUI作爲前端運行。
Apache很高興知道您是否進入網絡編程。你可以將它用作Web服務器,數據庫服務器,源代碼控制服務器等。
LINQ被認爲是SQL處理的下一個大的演化,所以也許你想要第一個谷歌。
高可用性和Brozar是我的同事告訴我的關鍵字。高耐久性是另一個。
安全=確保擁有一組信用的第一個人也是使用該組信用的同一個人+確保其他未經授權的人無法進入。請考慮您的接入點。
有計算機本身(登錄信用)。然後它在互聯網上的事實(防火牆/端口/服務運行)。然後是服務器本身(iis/SQL Server),它也有信譽。也許通過使用信用卡(REST token)或無信用卡的API的接口。
即使它使用信譽,確保您的API函數是可靠的。 EG:不要留下任何類似github的大量權限設置的漏洞,只要確保你的功能不是開放式的。
您還可以使用一臺機器作爲API接口來保護硬件,另一臺機器是實際數據庫,只有該網關可以與數據庫計算機通信。這樣,如果你的公共計算機(API服務器)被擊中,你的數據仍然在別處。
然後是加密,鹽漬......我不是專家。我只問了幾個星期就問你同樣的問題。我發現其他答案很有用,但正如你所看到的,我沒有看到這個細節層次,所以儘管問題是'09時代
@jimi,你有沒有經歷過? – 2009-02-24 00:26:07
@保羅:在什麼?你不應該詳細說明一下嗎? – GEOCHET 2009-02-24 00:26:45
@很遺憾 - 顯然你不太瞭解60年代的音樂。 – 2009-02-24 01:53:38