aoirint / uguisu

[Early Development Stage] Cross-OS Comment Viewer built on Flutter/Dart
MIT License
3 stars 0 forks source link

SQLite3 Database #109

Closed aoirint closed 1 year ago

aoirint commented 1 year ago
aoirint commented 1 year ago
aoirint commented 1 year ago

初期読み込み時にリクエスト数が増えてHTTP通信に失敗する問題

https://stackoverflow.com/questions/29811383/dart-limiting-simultaneous-connections

aoirint commented 1 year ago
aoirint commented 1 year ago

ユーザアイコンの解決だけ遅延させるみたいなことがしたかった... (解決済みかそうでないかはWidgetで持ちつつ、非同期処理の並行性管理はグローバルにやる、とか...?)

aoirint commented 1 year ago
aoirint commented 1 year ago

書き込みがすごく遅い... バルク処理(トランザクション処理)ができればマシにはなるかもしれないけど、どのくらい実用的か 1回のコメント追記に4-5sくらいかかってる?

aoirint commented 1 year ago

INSERT処理だけして、ソートはDB側でという手もありかもしれないけど、その部分のDIもできるようにしないといけない気がする

aoirint commented 1 year ago

あ、JSON実装では番組単位で1ファイルに書き込むだけだったけど、コメント単位で書き込みになってたからだ transactionで番組単位で書き込みが発生するようにしたらだいぶよくなった気がする 本当は1コメントだけ追記、にするべきではあるけど、まあパフォーマンス的に問題ないならとりあえずいいかな...

aoirint commented 1 year ago

非同期処理要因のコメント欠けを解決しないと...

aoirint commented 1 year ago

ThreadPool的な方法むずかしい ChatMessageをキューにためて、別スレッドでビジーループ回して消費していく処理を自前で書いてしまおうか... ThreadPoolでこれを代替できるかと思ったんだけど、なんかうまく動かせない(実装がわるそう) でも、通信とかDB書き込みとかでラグが大きくなるリスクがあるので、未解決のコメントをうまく表示したり、ある程度バルク処理したいんだけど...(まあそれは別PR...かな) ソートのタイミングも難しい

aoirint commented 1 year ago

すごくバグりそうだけど、新規コメントは未ソートのコメントリストに追加するようにして、毎回未ソートのコメントリストからソート済みコメントリストを作るようにしてみた。 これなら、未ソートのコメントリストが(たぶん)スレッドセーフなら、コメント欠けは起きなくなるはず? 2つのリストに状態をもっていて、カプセル化もまだしていないので危ういけど...

aoirint commented 1 year ago

Cache-hitのログを出すようにしている+1コメント追加するたびに全部再解決されるようになったので、大量にログが吐かれるようになっちゃった 全部再解決する仕様を直したいけど、別PRでもいいかな...

aoirint commented 1 year ago

たぶんUPSERTしている関係で、ID(sqlite_sequence)の消費が激しいな...

aoirint commented 1 year ago

まあ当面動作に問題はないから、いったんマージしちゃうか

aoirint commented 1 year ago

匿名ギフトのパースだけPR分けるかな

aoirint commented 1 year ago

113 にPR分けたのでマージ