2017-05-28 3 views
0

NodeJS/expressアプリケーションのMongoDBまたはMySQLではなく、暗号化されたファイルをデータベースとして使用するにはどうすればよいですか?ノード/エクスプレスアプリのmongodbではなく、暗号化されたファイルをデータベースとして使用

ここで、あなたのDBはJSON形式になり、定期的にバックアップするサービスがあります。

それはこの

{ 
    "info": { 
    "version": "0.0.1", 
    "name": "Give your DB a name" 
    }, 
    "data": { 

    } 
} 

ようになり、私は特急-DBと呼ばれるこのNPMパッケージを見たが、それは時代遅れではない維持だ

myDB.info() // => {"version" : "0.0.2", "name": "demo DB"} 

myDB.get('foo'); // => 'bar' 

myDB.set('foo', 'bar'); 

myDB.delete(key); 

myDB.backup(function(err) { 
    if(err) throw err; 
    else console.log('DB backed up at %s', new Date().toString()); 
}); 

myDB.search('stats.comments_lookup[{stats.page.id}]', function(res) { 
    console.log("search result: ", res); 
}); 

のようなメソッドを持っています。これを行うためのより良いオプションや方法はありますか?

+0

データベースの代わりにフラットファイルを使用することは、非常に貧弱です。データベースを更新するには、JSONを復号化し、変更してから、再度暗号化する必要があるという事実を考えてみましょう。これは間違いなくアトミックな操作ではありません。 –

+0

うん。それは本当です。しかし、これにスケーラブルなアプローチが必要です – Jalasem

答えて

1

暗号化されたデータベースを使用する代わりに、データを暗号化してデータベースに格納するだけです。

あなたが本当にデータセット内の全データを暗号化する必要はありませんほとんどの場合crypto-js module

var CryptoJS = require("crypto-js"); 

// Encryption 
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123'); 
//Store it in any database 

//Retrieve from database 
// Decryption 
var bytes = CryptoJS.AES.decrypt(ciphertext.toString(), 'secret key 123'); 
var plaintext = bytes.toString(CryptoJS.enc.Utf8); 

console.log(plaintext); 

優位
を使用することができます。したがって、機密データを暗号化し、他のデータをプレーンテキストとして保存するだけです。暗号化が実際にCPU集約的なプロセスであるため、アプリケーションの実行速度が向上します。

関連する問題