2009-02-24 71 views
8

我剛剛得到了一個適用於應用程序的想法,但它涉及到一些數據庫工作和一箇中央服務器。我應該從哪裏學習數據庫?

我從來沒有使用過數據庫或服務器。初學者有哪些建議的數據庫查詢語言?我現在使用的語言是C#,C++,Perl和Python,但我不在乎是否必須學習另一種語言(這總是很有趣)。

  • 我應該使用哪種語言?
  • 我將如何使用服務器?
  • 如果我分發我的程序並在我的網絡上使用計算機作爲服務器,是否會打開安全漏洞?如果是這樣,我該如何處理?
  • 而我將如何設置服務器,只需下載安裝程序並運行它?
+1

@jimi,你有沒有經歷過? – 2009-02-24 00:26:07

+1

@保羅:在什麼?你不應該詳細說明一下嗎? – GEOCHET 2009-02-24 00:26:45

+5

@很遺憾 - 顯然你不太瞭解60年代的音樂。 – 2009-02-24 01:53:38

回答

5

學習SQL。

下載SQLite作爲您的學習服務器。

這會讓你開始。

一旦你學習了SQL,你可以轉到其他問題。

我該如何使用服務器? MySQL或Postgres會是一個不錯的選擇。 Oracle,MS SQL/Server和DB2是很好的選擇。

如果我分發我的程序並在我的網絡中使用計算機作爲服務器,是否會打開安全漏洞?

這是一個很大的話題。從一個廣泛使用的漏洞列表開始。這裏有一些指針:http://homepage.mac.com/s_lott/iblog/architecture/C465799452/E20090124205231/index.html

+1

SQLite不是服務器。 – skypher 2009-02-24 11:33:58

+2

@skypher:這是有爭議的。它提供了SQL服務。它不是一個龐大,複雜,重量級的自由運行過程(或Windows「服務」)。由於它提供了SQL服務,它怎麼不是服務器? – 2009-02-24 12:12:59

1

我建議你從.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

2

大多數商業數據庫使用SQL作爲語言,雖然也有其他人我會建議你堅持嘗試和信任的軟件包,如果你傾向於開源陣營,我建議你使用MySQL,如果你有微軟租約,那麼你應該使用SQL Server Express(即免費版)。

我不確定你在問怎樣使用服務器,但是我假設你問的是你如何開發/構建數據庫,使用SQL Server它有一個客戶端程序來管理數據庫,而使用MySQL有一個用於管理的開源PHP工具。

至於安全性,如果數據庫配置正確,數據庫是非常安全的,我建議閱讀關於最終選擇的數據庫平臺的配置文章。

0

我推薦先學習SQL。最簡單的方法是使用Access(如果有)。這樣您就可以專注於學習SQL語法和代碼。最重要的是您可以查看示例數據庫和查詢。另外,您可以使用GUI將查詢放在一起,然後查看生成的SQL代碼。

當你對SQL很熟悉時,你可以看看你想使用哪個數據庫。如果你是'尋找免費軟件'類型的開發者,那麼你可能想看看MySQL。否則,我會推薦Microsoft SQL Server。

如果您使用MySQL,那麼Perl是一門易用的語言。如果你想要一個漂亮的GUI,儘管你可能想要C#或VB.NET。

-1

如果您正在開發一個Web應用程序,我建議您開始閱讀Ruby on Rails教程。數據庫如此抽象並且對模型非常有用,以至於SQL幾乎可以完全分解出來,而您只需考慮業務模型。

如果你在一個應用程序的工作,去學習或者一些有約束力的系統或SQL我知道C#有一些系統(LINQ?),可能使生活更輕鬆...

1

它確實不你選擇哪種編程語言。與數據庫接口的最常見方式是通過SQL,這是一種簡單的語言,它爲大量不同的數據庫提供了一個通用接口。一旦你知道SQL,你可以很容易地使用任何編程語言的數據庫。

最好的開始是一個名爲SQLite的數據庫,它爲存儲在磁盤上簡單文件中的數據提供SQL接口。這意味着您可以創建一個數據庫並開始玩耍並學習SQL,而無需設置真正的數據庫服務器。根據您的應用程序,它甚至可能是您所需要的全部。

問題的最後一部分是不可能回答的。託管在網絡上的任何應用程序都會引發各種安全問題。需要更多的信息,並希望通過學習一些關於數據庫的知識,您可以爲自己回答一些問題。

0

學習SQL,o'reilly幾乎所有的數據庫工作,SQL服務器,MySQL,Postgree所有這些都是一個很好的開始。 你應該從python開始。 C#會讓你覺得'所以我點擊這裏,這裏和這裏,下一個,下一個,完成,我連接到數據庫',並且當你嘗試使微軟的腳本有點不同時,你將很難計算微軟的wizards已經完成了你的代碼。另一方面,使用C#可能會完成(嚴重但已完成)的工作,這是關於編程的第一條規則,因此,基本上可以做任何你想做的事情(但我建議使用python和mysql)。

關於第二個問題,如果您必須使您的應用程序在線(它只是一個問題),您將始終使用服務器。

關於第三個問題,當你在線工作時,你會經常打開安全漏洞,首先,製作你的程序,然後研究你的安全缺陷。

0

您應該瞭解數據庫建模,特別是實體關係模型。 SQL只是與關係數據庫交談的技術,而且這很容易,但知道如何設計表以滿足應用程序的數據需求並以便捷的方式(即至少以第二範式)將爲您節省時間很多麻煩。

0

我同意你需要知道SQL語言,如果你將使用數據庫。一本學習SQL的好書是O'Reilly的Learning SQL, second edition

在學習使用關係數據庫的基礎知識時,應推遲使用服務器(其中包括避免上述書中使用的MySQL系統)。我同意SQLite將是一個更好的工具,因爲您可以瞭解關係數據庫而不是服務器的管理困難。

-3

我應該使用哪種語言?

Common Lisp如果你是在一個啓發性的經驗和 希望不僅與關係數據庫(SQL),而且 面向對象的人一起工作。

其他語言傾向於只支持RDBMS。

我該如何使用服務器?

我的建議:租用一個便宜的虛擬GNU/Linux服務器,並學習如何使用SSH工作。

如果我分發我的程序並在我的網絡上使用計算機作爲服務器,是否會打開安全漏洞?

也許,也許不是。這取決於你的程序。

你問的問題大致類似於「如果我在我的房子上工作,我能讓盜賊更容易進入嗎?」。

如果是這樣,我該如何處理?

閱讀安全編程和防火牆。

在垃圾收集中使用合理的編程語言,並謹慎處理任何用戶輸入。

而我將如何設置服務器,只需下載安裝程序並運行它?

這比這更復雜一點。這取決於您要使用的操作系統和服務器軟件。

什麼服務器?數據庫服務器(如果您使用的是),Web服務器,您的應用程序服務器,還有其他的東西?

0

至於「我將如何使用服務器?」問題這可能意味着很多事情。 。 。您是否聽說過「LAMP」(Linux-Apache-MySQL-Php(perl,python))捆綁軟件?

這是一種運行服務器(apache),數據庫(mysql)和您選擇的編程語言的相當普遍的方式。

我在Windows機器上運行Apache和MySQL,並且更喜歡使用Python來完成數據庫事務。使用python與MySql進行交互非常容易,並且可以使用GUI作爲前端運行。

Apache很高興知道您是否進入網絡編程。你可以將它用作Web服務器,數據庫服務器,源代碼控制服務器等。

0

LINQ被認爲是SQL處理的下一個大的演化,所以也許你想要第一個谷歌。

0

高可用性和Brozar是我的同事告訴我的關鍵字。高耐久性是另一個。

安全=確保擁有一組信用的第一個人也是使用該組信用的同一個人+確保其他未經授權的人無法進入。請考慮您的接入點。

有計算機本身(登錄信用)。然後它在互聯網上的事實(防火牆/端口/服務運行)。然後是服務器本身(iis/SQL Server),它也有信譽。也許通過使用信用卡(REST token)或無信用卡的API的接口。

即使它使用信譽,確保您的API函數是可靠的。 EG:不要留下任何類似github的大量權限設置的漏洞,只要確保你的功能不是開放式的。

您還可以使用一臺機器作爲API接口來保護硬件,另一臺機器是實際數據庫,只有該網關可以與數據庫計算機通信。這樣,如果你的公共計算機(API服務器)被擊中,你的數據仍然在別處。

然後是加密,鹽漬......我不是專家。我只問了幾個星期就問你同樣的問題。我發現其他答案很有用,但正如你所看到的,我沒有看到這個細節層次,所以儘管問題是'09時代