前提・実現したいこと
AWSのEC2インスタンスとRDSを組み合わせて、
Nuxt.js + Express + MySQLで
ユーザがひたすら大量のアイテムをランダムに獲得していくような
ブラウザアプリケーションを作っています。
(非常に種類が多く、一度に引ける数も多いガチャと考えて頂けるとわかりやすいかと思います。)
不特定多数のユーザが100万種類超のアイテムとその個数(整数)のデータを持つとして
どのようなデータの保持のさせ方をすればよいか考えているのですが、
今いち良いデータのもたせ方を見つけられていません。
現在は愚直に100万要素数の0埋め配列を作って、アイテムのidに該当する要素を
インクリメントして、それをブラウザのローカルデータとして保存するような方法をとっているのですが
メモリを消費する上に見づらく、あまりいいやり方ではないのではないかと感じています。
このあたりの多量のデータについてうまく扱う知見があれば教えていただきたいです。
(1000 * 1000 * 1000の多次元配列にした方が効率良い・効率的な圧縮方法など)
ユーザごとにデータを保存させたいと考えているのですが、
MySQL上でもユーザのブラウザデータとしてローカルに持っても
どちらでも良いと考えています。
ユーザが大量にいる場合はMySQL上だとデータが大きくなりすぎるかと思い、
現在はユーザのローカルに保存しています。
よろしくお願いします。
該当のソースコード
仮に要素数を100万としています。
javascript
1summary_id: Array(1000000).fill(0) 2 3get_item(get_item_id){ 4 ++this.summary_id[get_item_id] 5 localStorage.setItem('summary_id', JSON.stringify(this.summary_id)); 6}
試したこと
100万次元超の0埋めArrayを作り、
ユーザが獲得したアイテムについて array[id]を1加算
補足情報(FW/ツールのバージョンなど)
├── @nuxtjs/axios@5.5.4
├── @nuxtjs/pwa@2.6.0
├── cross-env@5.2.0
├── express@4.17.1
├── forever@1.0.0
├── mysql2@1.6.5
├── nodemon@1.19.1
├── nuxt@2.8.1
├── sequelize@5.8.11
├── sequelize-cli@5.5.0
└── wikijs@5.5.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/02 04:22 編集
2019/07/02 06:51 編集
2019/07/02 13:39