2012-09-07 52 views
2

我正在尋找一個鍵元組數據庫,我的數據庫以15分鐘粒度存儲過去1年中各種公司股票值的條目。以下是要求:具有C API和開放源代碼的鍵值數據庫

  1. 它應該能夠GB存儲數據(200萬條記錄的各約100個字節)
  2. 我們將其存儲在一臺機器上(無分佈式環境)的約20 ,RAM可以最大2 GB。該機器將是32位的Linux機器,所以我猜mongoDB是沒有問題的。
  3. 應該是開源的,我可以在沒有任何付款/發佈我的源代碼的情況下將其用於生產。
  4. IT 必須有一個很好的C API和文檔。
  5. 我想保持以下格式的條目:
    • companyID
    • 日期ID //可以從1到180
    • 時間ID值//每15分鐘,這樣可以採取值1 -96
    • 股票價值
  6. 的關鍵是

    • companyID
    • 日期ID //可以從1至180
    • 時間ID值//每15分鐘,所以可以取的值1-96

    值是

    • 股票價值

以下是我希望能夠做到:

  • 檢索所有公司在任何特定日期和特定時間的所有記錄。基本上,我希望能夠做到這樣的事情:
    • select * from table where day = 2 and time = 48;
  • 檢索特定公司的所有記錄。基本上我想能夠做到這樣的事情:
    • select * from table where companyID = 10223;

很顯然,我不想執行多個查詢,相反,我想選擇的數據庫,能夠支持查詢按我上面的要求,即只有1個查詢應足以檢索上述結果。不用說,響應時間應該很小(最多1秒是可以接受的)。

我也對NOSQL數據庫開放。請幫忙。

+0

怎麼樣http://www.sqlite.org/ –

回答

4

許多重要價值的商店,從舊的DBM變種,如GDBM到現代變種如Berkeley DBTokyo Cabinet

參見例如Wikipedia獲取其他DBM類數據庫的列表。但是,如果你想要更高級的查詢,那麼你應該使用SQLite,或者Berkeley DB(儘管它不再是我認爲的開源代碼)。

+0

如果我想要鍵值對,如:key = {companyId,dayID,timeID},值爲{stockVal}。那麼哪個數據庫可以幫助我實現這樣的目標,並讓我回答我所尋找的所有查詢? – Ouroboros

+0

@ P.Prasad所有人都可以用這種或那種方式處理數據。對於類似DBM的數據庫將數據放在一個結構中,爲SQLite創建一個表。查看我提供的鏈接並進行一些搜索,找到您認爲最適合的內容。 –

0

DB看起來像3維數組。 第一個維度:公司ID,第二個日期(1-180),第三個是時間(1-96)和 數據是庫存值。 如果內存不是約束3D數組的響應時間更快。 否則需要去散列。

+0

是否有任何多維數據庫?聚合和基本過濾是可能的 – Ouroboros

0

可以使用Redis的(www.redis.io/clients)誰在許多語言的客戶端API(C,JAVA,PHP,...)