問題タブ [blob]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - ファイルシステムに画像を保存する方法
現在、InnoDB テーブルに BLOB として保存されている画像 (最大 6MB) があります。データのサイズが大きくなるにつれて、毎晩のバックアップはますます遅くなり、通常のパフォーマンスが妨げられます。
そのため、バイナリ データはファイル システムに移動する必要があります。(ファイルへのポインタは DB に保持されます。)
データにはツリーのような関係があります。
ここで、データをディレクトリ構造全体に均等に分散させたいと考えています。どうすればこれを達成できますか?
MD5('userId, albumId, imageId');
結果の文字列をスライスして、ディレクトリ パスを取得できると思います。
これにより、最初の文字をサーバーにマップし、ディレクトリ構造を複数のサーバーに均等に分散できます。
ただし、これでは画像がユーザーごとに整理された状態に保たれず、1 つのアルバムの画像が複数のサーバーに分散される可能性があります。
私の質問は次のとおりです:
ユーザー/アルバム データを一緒に保ちながら、バランスの取れた方法で画像データをファイル システムに格納する最良の方法は何ですか?
私は正しい方向に考えていますか?それとも、これは物事を完全に行う間違った方法ですか?
更新:最高レベルで分割するため
の文字列スライスを行います。md5(user_id)
そして、すべてのユーザー データを同じバケットに入れます。これにより、ユーザー データを近くに保存しながら、データを均等に分散できます。
ディレクトリごとのアルバムの数を少なくするために、後ろから分割された albumId を使用すると思います (ただし、ほとんどのユーザーには必要ありません)。
ありがとう!
sql - 文字列からブロブへ
group_concat コマンド内で concat_ws を使用しようとしています。単純化されたクエリでは、次のようになります。
添付ファイルの列を Blob 型として取得します。Blob の代わりに文字列として取得することは可能ですか?
php - Kohana PHP、ORM、および MySQL BLOB
Kohana の ORM ライブラリを使用して、MySQL テーブルで BLOB を作成および取得しようとしています。
コードは次のようになります。
この時点で、データをファイルに出力して問題がないことを確認しました。ただし、データを取得すると、データが破損しています。これをもう少し絞り込むことができました-MySQLクエリツールを使用して、データベースに保持されているデータを抽出し、データベース内のデータが破損していることを確認できるため、問題はINSERTにあるはずです.
また、入力されたファイルが常に破損しているわけではありません - 小さなファイル (画像など) は問題ない傾向があります。
誰にもアイデアはありますか?
performance - ドキュメントを BLOB としてデータベースに保存する - 欠点はありますか?
ドキュメント管理システムの要件は次のとおりです。
- ディレクトリやファイルなどを単純にコピーすることで、盗難から保護する必要があります。
- 従来のウイルス感染(物理ファイルの感染)に対して安全であること
- 取得が高速でなければならない
- リポジトリは、カジュアルな (ディレクトリ) ブラウジング ユーザーなどに表示されてはなりません。
すべてのドキュメント (およびスキャンした画像) を BLOB としてデータベースに保存することにしました。これまでのところ、私の経験は素晴らしく、ドキュメントの検索も驚くほど高速です。上記のすべての基準を満たし、いくつかの追加の利点もあります。関連するエンティティと一緒にドキュメントを自動保存する、コンテンツを簡単かつ迅速に検索する、ドキュメントを開いて名前を付けるなどのあらゆる種類のユーザー アクティビティを削除するなどです。
私の質問は、この設計と実装で見落としていた深刻なリスクや事柄はありますか?
編集注: DB は PostgreSQL であり、BLOB を非常にうまく処理し、非常にうまくスケーリングします。環境はマルチユーザーです。
sqlite - sqlite でバイナリ blob の長さ (サイズ) を確認するにはどうすればよいですか?
BLOB ファイルを含む sqlite テーブルがありますが、BLOB のサイズ/長さをチェックする必要があります。どうすればよいですか?
私が見つけたいくつかのドキュメントによると、 length() はテキストでのみ機能し、最初の NULL の後にカウントを停止するため、 length(blob) の使用は機能しません。私の経験的テストは、これが真実であることを示しています。
私はSQLite 3.4.2を使用しています
アップデート:
そのため、SQLite 3.7.6 では、length() 関数が blob の正しい値を返すように見えます。sqlite のさまざまな変更ログを確認しましたが、これがどのバージョンで修正されたかはわかりませんでした。
Sqlite 3.7.6 から:
これを反映するためにドキュメントが変更されました。
sql - SQL Server で純粋な SQL を使用してデータベース間で BLOB 値をコピーする
SQL Server 2005 データベースからいくつかの BLOB データを取得し、この同じデータを別のサーバーの別のデータベースに挿入する SQL スクリプトを生成する必要があります。
私は SQL スクリプトを使用してのみこれを行うことが許可されています。他のユーティリティを使用したり、Java や .NET でプログラムを作成したりすることはできません。
もう 1 つの大きな制限は、スクリプトを実行して BLOB データをターゲット データベースにコピーするときに、元のデータベース (元の BLOB データがある場所) にアクセスできないことです。 SQL スクリプト ファイル。
要約: BLOB データをテキストにエンコードして、スクリプト テキスト ファイル内の SQL INSERT コマンドにダンプして実行できるようにする方法はありますか?
必要に応じて、特別な T-SQL ステートメントとストアド プロシージャを実行できます。
sql-server - ストリーミングとLinqブロブ
ドキュメントのメタデータをテーブルに保存するために使用しているオブジェクトがあります。ドキュメントの本文は非常に大きくなることがあり、2GBを超えることもあるため、SQL 2008のnvarchar(max)フィールドに格納します。後でSQL2008を使用してそのフィールドにインデックスを付けます。ファイルストリームはデータベースに非常に制限されており、特定の種類の同時実行ロックスキームを妨げるため、ファイルストリームは使用しません。
このオブジェクトは、LinqToSQLを介して開発者に公開されます。私の懸念は、フィールドが大きくなり、テキストが1.5 GBを超える場合、OutOfMemory例外で.Netが爆破されるのを見たことがあることです。
だから私は疑問に思っています、私はこのブロブをLinqでストリームとして扱うことができますか?または、BLOBを使用する場合は、Linqを完全にバイパスする必要がありますか?
mysql - MySQL で重複する BLOB 行を効果的に見つけるにはどうすればよいですか?
私はフォームのテーブルを持っています
約 160,000 行あり、blob 列には約 2GB のデータがあります (blob あたり平均 14kb)。別のテーブルには、このテーブルへの外部キーがあります。
3000 くらいのブロブが同一です。だから私が欲しいのは、重複を削除できる再マップテーブルを提供するクエリです。
単純なアプローチでは、30 ~ 40k 行で約 1 時間かかりました。
他の理由で、ブロブのサイズを含むテーブルをたまたま持っています。
fk と sz の両方のインデックスを作成することで、50k 行で約 24 秒かかるダイレクト クエリが実行されます。
ただし、これは da (データ テーブル) に対して完全なテーブル スキャンを実行しています。ヒット率がかなり低くなければならないことを考えると、インデックス スキャンの方が優れていると思います。それを念頭に置いて、データの 3 番目のコピーを 5 番目の結合として追加し、約 3 秒を失いました。
質問はOKです:私は2番目の選択よりもはるかに良くなるでしょうか?もしそうなら、どのように?
少しの結果は次のとおりです。キー列が非常に頻繁に使用されるが、残りはめったに使用されないテーブルがある場合、そのテーブルの別の結合を追加して、インデックススキャンとフルスキャンを促進する方が良いでしょうか?テーブルスキャン?
#mysql@irc.freenode.net の Xgc は、サイズのようなユーティリティ テーブルを追加し、一意の制約をオンにすると非常にfk
役立つ可能性があると指摘しています。トリガーのいくつかの楽しみとそうでないものは、最新の状態に保つのに悪くないかもしれません.
java - BLOB をデータベースに格納するための最もグルーヴィーな方法は?
画像をデータベースに挿入するためのユーティリティ スクリプトを作成しているときに、もっと洗練された方法はないかと考えました。結局、これに沿って何かに落ち着きました:
誰かが私を啓発できますか?
database - 少数の画像を保存する: blob または fs?
ユーザーが自分のプロフィール写真をアップロードできるように、サイトにいくつかの機能を追加しているので、データベースに BLOB として保存するか、ファイル システムに配置するかを考えていました。
私はここでこれに似た質問を見つけました: Storeing images in DB: Yea or Nay .おそらく 150x150 ピクセル)、および少数のそれらの数: おそらく最大 1000 または 2000 です。
このシナリオでの DB BLOB とファイルシステムの違いについてどう思いますか? クライアントは、DB からのイメージとファイルシステムからのイメージをどのようにキャッシュしますか?
DB に保存されている BLOB が最適な場合 -それらを保存する場所について知っておくべきことはありますか? 大多数のユーザーは写真をアップロードしないと思うので、必要に応じuser_pics
て通常のusers
テーブルに (外部) 結合するテーブルを作成する必要がありますか?
編集:リンク先の2つの重複ではないため、この質問を再開します。この質問は、特に少数の画像に DB または FS を使用することの長所/短所に関するものです。上で述べたように、もう 1 つの質問は、何千もの大きな画像を保存する必要がある人を対象としています。