2010-04-05 89 views

回答

26

緩存是一種獨特的動物,這取決於你如何使用它,然後它可以被描述爲一個沒有SQL數據庫,RDBMS或對象面向數據庫。當然,對所有人來說並非所有事情都是如此,因此瞭解它們在哪些方面都需要一些解釋。

這一切都建立在一個名爲MUMPS的前關係程序語言之上(可怕的營銷名稱對谷歌來說也很糟糕,所以現在他們只使用Cache,這對谷歌搜索來說只是很糟糕)。該語言包括將數據作爲本地命令持久化的操作,因此可以在不影響應用程序代碼的情況下優化持久性引擎。

該語言有一個集合類型,一個鍵值爲0或多個排序的鍵的字典,以及一個數據類型,它有操作符來完成粘連的操作,而其他操作符則用來執行數字操作。所有的鍵和值都是該數據類型的實例。

這已經是一個很長的時間了,應用幾十年前寫在這個上面仍然運行。

該語言早於第一個RDBMS,但後來的語言實現者增加了RDBMS支持。緩存將SQL(靜態或動態)編譯爲更新的MUMPS版本,然後驅動存儲引擎。如果這聽起來很奇怪,那不是真的 - 每個RDBMS都會將SQL編譯或解釋爲其存儲引擎的指示。

緩存已經發展成面向對象的語言(就像許多其他語言一直在做的那樣),這意味着現在有兩種數據類型,原始的和對象類型。對象不能直接作爲鍵或值存儲在磁盤上,但可以繼承或實現持久性方法。

因此,使用Cache的人可能會使用面向對象的代碼,SQL或過程代碼,或者將它們組合起來。

有什麼優點和缺點?

對於運行傳統MUMPS應用程序的人來說,他們幾乎別無選擇,所以我會專注於其他人。

一個很大的缺點是市場份額很小(與其他RDBMS相比,儘管它可以與其他產品相比),並且與商業RDBMS定價相同(儘管它可能更容易制定一個特定的特殊用途的單獨交易),所以需要有某種令人信服的理由來購買它。

此外,小市場份額意味着開發商的市場更小。此外,可以使用的不同方式意味着並不是所有的Cache開發人員都適合所有項目 - 過去20年來,維護遺留(從結構化編程被捕獲之前)應用程序的人可能不太擅長將Cache用於面向對象的Web應用。

另一個問題是,除了Intersystems(供應商)提供的外,幾乎沒有任何代碼庫,並且這些代碼庫不可能與.NET或Java等規模競爭。

一個很大的優點是緩存對象腳本(現代MUMPS語言)比通常在數據庫中獲得更多的語言。數據庫中您擁有的業務邏輯越多,這就越有利。

其實,恕我直言,緩存的優點大部分來自於如果您將其用於您的業務邏輯。將數據庫和業務邏輯相結合要簡單得多,更容易獲得高性能,並且在環境支持這一點時不會特別導致長期維護問題。

Cache中數據庫和業務邏輯相結合的缺點是移植要麼非常困難,而且通常你的業務邏輯是用自由語言編寫的,你不需要任何種類的許可證來運行它。在這裏,你幾乎在同一條船上,就好像你的業務邏輯在TSQL中一樣,除了它更難以移植。

如果您是O.K.儘管如此,許多事情都很可愛。沒有ORM - 商業或手工編碼。 SQL被編譯成可以查看的代碼(它的生成過程是爲了加快可讀性而優化的,變量名稱可以是'T32'之類的東西,但是如果必須,它仍然是可讀的),甚至是直通或斷點。編寫SQL遊標的成本非常低。你實際上可以編寫面向對象的代碼。它的解釋,所以它更容易發展迅速。如果您想要速度,您可以關閉事務並轉到無SQL。

我也發現它很容易管理。在我的大部分經驗中,沒有像DBA這樣的東西 - 你只是不需要。

+3

我不同意沒有DBA的最終評論。它通常只包含在編程團隊的角色中,他們必須執行一般的DBA任務。 在我的公司內部,DBA角色基本上分爲3個人1個程序數據庫更改,1部署這些更改另一個維護備份和性能調整。 由於性能工具很少,我們不得不多次僱傭Intersystems來進行DBA優化任務。 主要的缺點是Cache程序員很少,所以產品維護成本在這方面增加。 – Andrew 2012-05-17 14:57:45

+0

@Andrew--我只能按照我所經歷過的或聽到別人說過的話,也許那是非典型的。我從來沒有像描述過部署,備份和性能調整那樣做過很多工作。但我同意很少有性能工具和程序員。 – psr 2012-05-17 17:10:46

+1

那麼從某種意義上說,我會說關於MySQL,MS SQL等的知識。我知道很多組織擁有一個或多個運行數據庫的數據庫。您傾向於根據您正在處理的數據大小,更新頻率及其對您公司的相對(可​​能更重要的感知)重要性來找到DBA的「需求」。我們有一個緩存數據庫和2個人執行DBA任務。我們有很多MySQL數據庫,安裝後有0個DBA參與。 – Andrew 2013-04-05 19:21:06

4

Intersystem的緩存可以定義爲面向對象的數據庫。

我想到的方式是它是使用面向對象的腳本引擎的常規RDBMS數據庫。 Oracle有存儲過程,Cache有Object腳本。

我們正在遷移到Intersystems Cache以利用其BI &報告工具。我仍然沒有遇到過使用MySQL或Oracle的存儲過程無法解決的情況。我更願意在SQL過程中編寫所有內容,以避免將來出現任何遷移問題。

具有強大面向對象背景的人可能更喜歡使用ObjectScript。

萬一你沒見過吧,這裏是their documentation

1

這不是RDBMS的設計。它是對象數據庫。您可以使用sql界面,並查看來自傳統RDBMS的數據。

幾年前我就在嘗試,只是爲了愛好項目,主要是學習。

一個值得注意的事情是,在'所有那些雲東西'之前,他們已經有了系統,在那裏你可以通過一個節點存儲數據,並且它將爲其他幾個節點複製它。所以如果你需要擴展它可以完成。 10年前,當數據庫之間的數據複製是由內部工具afaik完成時,這是cca。他們表示,系統中有5萬多人在線工作,只有一個基地。複製可以通過幾種方式完成。

數據存儲在樹中,他們稱之爲全局數據。你存儲的所有東西都是樹。他們有對象訪問,實際上數據庫中的對象是你的語言中的對象(Objectscript,我認爲他們支持Java)。 數據中存在真正的繼承(全局變量,稱它爲不正確的表)。所以沒有必要使用hibernate/orm/jpa/... stuff。

雖然他們的語言是嗯。如果你喜歡Perl一個內襯,你很好。否則,它會挑釁。

相關問題