Coder Social home page Coder Social logo

Comments (5)

builtinnya avatar builtinnya commented on July 20, 2024 1

指摘の通り各話情報の増加頻度は非常に高いので,どこかの段階で episodes.yml を分割しなければならない.
将来的にファイル数を抑えて episodes.yml を分割する方法としては,例えば以下のやり方がある(細かいところはもっとベターなやり方があるだろう).

  • どこかの時点で,episodes2.yml などとして,別のファイルに各話情報の半分を移す
  • episode-locations.yml ファイルを用意して,そのファイルに id からファイル名へのマッピングを書く

from animedb.

eru avatar eru commented on July 20, 2024

書いてある分け方だと、結局episodes.ymlがかなり大きくなると思います。

現状、animedb.ymlが、751,688行あって、1作品あたりepisodesを除いて20行なので、
751688 - (20 * 10334) = 545,008行程度になるはずです。

また、episodes.ymlの成長スピードもかなり早く、週に60本以上放映しているため、
episodesの情報をフルに入力した場合7行あるので、60 * 7 = 420行以上毎週増えていくことになります。
※ 毎週入力できればですが。

結局、ランダム文字列のIDを付与した後に編集作業を行うとすると、

  1. animes.ymlを、追加したい作品名で検索し、idを見つける
  2. episodes.ymlを、idで検索し、追記箇所を見つける
  3. episodes.ymlに追記する

という手順になるため、episodes/$id.ymlというように、
episodesディレクトリ下にanimes.idのyamlファイルを作っても手間は変わらず、
ファイルサイズを小さくできるのでいいのでは?

from animedb.

builtinnya avatar builtinnya commented on July 20, 2024

@eru
厳密に作業効率がどう変わるかを論じるのは難しいが,基本情報と各話情報を分けると,少なくとも基本情報については見通しが良くなる.
そのため,ファイル分割を前提とした上で,さらに各話情報の編集効率を上げるために,その「各話情報を作品ごとにファイルで分ける」という方式を提案していると解釈する.

その方式を採用すると,ファイルサイズは小さくなるが,当然ファイル数が多くなる.ファイル数が10^3〜10^4 オーダーになってくると,一つのディレクトリで管理することは難しい.
そうなると,年代・クールなどの基準によってさらにディレクトリを分けることになるだろうが,今度はプログラムでデータを扱うのが煩雑になってくる(どのディレクトリに該当ファイルが存在するかをシーケンシャルに確認する必要がある,etc.)

Linux カーネルでもファイル数は 53,647 個程度らしい(ref: 増え続けるLinuxカーネルコード、2016年第1四半期の総行数は2100万超 | マイナビニュース).
Anime DB は今の段階では極少人数で管理すること,これからスタッフやキャラクターも追加することを考慮すると,その判断は少なくとも時期尚早であると思う.

from animedb.

eru avatar eru commented on July 20, 2024

現状のanimedb.ymlファイルの編集も、エディタで編集していてファイルサイズが大きすぎて、問題が出るような状態ではないので、見通しの良さを求めて分割するのであれば、元の案でいいと思います。

仮に、episodesをディレクトリに分けて格納するという方法をとるのであれば、animes.idの頭2文字と使って、Z5bwa8ArLg5であれば、Z/5/Z5bwa8ArLg5.ymlなどにすれば、処理しやすくていいかも知れません。

ここまで書いて、いまさら気づいたのですが、ファイルシステムによっては、ファイル名の大文字・小文字を区別しないので、そこで衝突が起きる可能性があるため、提案した方法は難しいですね…

from animedb.

builtinnya avatar builtinnya commented on July 20, 2024

#46 (comment) の計算で行くと,週に420行増えるとして,作品の増加率を無視すると,1年で 21,840 行しか増えないのか.
episodes への大規模なマージ作業は基本的には過去の作品のみで完結するので,単純入力作業なら1ファイルで当分良さそう.

from animedb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.