2013-05-16 137 views
3

我有一套公共數據,我需要給我的客戶,(數據是私人的,每個客戶端不同)。每個客戶都有不同的結構,需要不同類型的數據。我有50多個客戶,他們都需要使用不同語言(法語,西班牙語,英語,意大利語和德語)的不同信息。創建二進制文件,如maxmind

他們中有些人得到每重複記錄10場,有些人會2

他們中的一些使用Linux作爲其主要的(CentOS的,我認爲)和其他使用Windows服務器(本地服務器和Web服務器),這也文件將用於本地應用程序(win32,php等)。

挖一個共同的解決辦法,我發現我能創造這樣的MaxMind(我認爲這是一個二進制文件,你提供的索引檢索信息之後。

,因爲一些客戶端的我不能創建一個API使用他們的計算機能夠訪問來自特定小時上網(有點像一所學校的實驗室)的專用網絡。

現在,有一種方式來創建這樣的MaxMind數據文件?

感謝

+0

你能解釋一下這個問題一點?出於某種原因,您是否無法提供原始數據集?它如何分配? – Anthony

+0

我還應該提到,如果你正在尋找一個他們可以訪問的任意數據庫接口,那麼有很多。甚至似乎是MaxMind風格數據庫的開放實現:https://github.com/maxmind/ – Anthony

+0

@Anthony我不想爲每個客戶端創建一個系統,我想創建一個二進制文件,然後客戶端可以使用它。所以我不必用C#,OBJ-C,Java,PHP,Phython,Perl和ASP.net編程。客戶端將完成這一部分。我得到了您提供的鏈接,但不會創建二進制數據庫。 –

回答

1

你的問題是:

是有辦法創造這樣的MaxMind的數據文件?

答案是肯定的 - 如果您準備對您熟悉的Maxmind API進行逆向工程。對我來說那將是C# sample。你可以看看代碼是如何讀取格式的,並從中解讀出它所期望的格式。

作爲替代方案,創建您自己的二進制格式。要創建自己的二進制格式非常簡單,您可以決定內部格式(可能使用JSON或XML),然後將其轉換爲Base64格式。您所有的客戶端需要做的就是將base64(二進制數據)轉換爲字符串格式,然後使用庫來解釋JSON或XML。

使用類似這樣的JSON轉換爲二進制:http://wiki.fasterxml.com/SmileFormat

+0

挖掘完成後,我可以從c#示例中進行自定義,謝謝 –

+0

@PatREllery太棒了!感謝代表。 – Rots

2

你最好的辦法就是在您的最後,將您的所有數據存儲在關係數據庫中。根據數據集的大小以及如何訪問數據集,MySQL或SQLite可能是不錯的選擇。這將使您可以非常輕鬆地根據每個客戶端來選擇您需要的數據。

對於每個客戶端,開發一個SQL查詢來提取他們需要的所有數據(而不是更多)。編寫一個腳本來運行查詢並填充另一個數據庫(要發送到客戶端)或一個簡單的CSV文件。 (如果他們計劃將數據添加到他們自己的數據庫中,那麼CSV可能會更容易些,然後他們可以輕鬆區分上次發送給他們的任何更改)。

現在,您可以爲您的數據提供方便的存儲解決方案,並且可以簡單地提取與每個客戶端相關的數據。您可以通過編寫腳本來定期執行每個客戶端查詢,甚至將它們郵寄出去,從而輕鬆實現流程的自動化。

我會建議不要使用MaxMind格式,除非您有特定的原因。使用更常見的數據庫界面可以找到更多的支持。

+0

這正是我無法做到的,我不知道有足夠的DB2,Oracle,MsSQL,Sybase SQL Server,Ingres,UniSys或MySQL來創建這樣的系統。 –

+1

學習如何編寫SQL查詢很可能比試圖手動解析和過濾每個客戶端的數據更容易。我強烈建議僅僅通過一個簡短的SQL教程(比如[this](http://zetcode.com/db/sqlite/)用於SQLite)。不幸的是,如果沒有大量的腳本(和調試),或者學習數據庫查詢語言,很可能不會有一個現成的解決方案來處理您的問題。 – Anthony

相關問題