2010-02-03 64 views
8

我即將把我的一些實體從身份切換到hilo id-generator。NHibernate和hilo生成器:如何設計關鍵表?

我不知道應該如何設計持有下一個高值的表。

  • 我應該爲所有實體或一組相關實體使用單個表嗎?
  • 我應該爲每個實體使用另一個表嗎?
  • 我應該爲每個實體使用另一行還是一列的單個表?

是否有最佳做法?需要考慮什麼?任何方法有沒有優點或缺點?

回答

3

我不認爲有一個「最佳」的做法,而是要了解希洛是如何工作是很重要的:

  • 表希洛發生器是專爲不支持序列,這是一個更加數據庫自然適合這項任務。
  • 當您第一次保存該類的實例或當您用完Lo值時,將檢索並更新某個類的值。
  • 不同的值是用於每個類。

所以,你必須考慮至少兩個變量:

  • 爭。您可以通過使用單獨的表格稍微改進性能
  • 範圍。有了一個非常大的數據庫,你有更大的風險,最終耗盡值。

考慮到後,這只是一個品味問題。

+0

所以你會考慮使用單獨的表?爭用:你的意思是併發事務嗎?單個表應該如何影響性能?通過鎖定它?另一方面,當使用多個表時,會有更多的選擇和更新,每個受影響的表有一個選擇和更新。混合可能很有用:每組相關表格的表格。 – 2010-02-05 09:54:00

+0

是的,我會使用單獨的表格,因爲鎖定。 選擇/更新的數量是相同的,因爲即使使用同一個表,也不會在類之間共享生成器值。再次,請牢記關鍵概念:這只是使用表格作爲序列生成器。 – 2010-02-05 16:06:56

+0

爲什麼選擇/更新的數量相同?當我有一張桌子時,爲什麼要選擇和更新它需要的每個班級的同一張桌子? – 2010-02-08 13:42:00