問題タブ [saas]

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.

0 投票する
10 に答える
20126 参照

database-design - SaaSデータベースの設計-複数のデータベース?スプリット?

SaaSアプリケーションがさまざまな方法でホストされているのを見てきました。機能とモジュールを複数のデータベースに分割することをお勧めしますか?たとえば、あるDBにUserテーブル、別のDBに機能/アプリ固有のテーブル、別のDBに他の一般的に共有されているテーブルなどを配置しますか?

0 投票する
6 に答える
5927 参照

.net - マルチテナント アーキテクチャと NHibernate

最後に、NHibernate を利用したドメイン モデルでマルチテナント機能の透過的で流暢なサポートを実装するための最良の戦略は何かを説明してもらえますか?

TenantID によるフィルタリングなど、マルチテナントのものからドメイン ロジックを可能な限り分離する方法を探しています。

0 投票する
5 に答える
1209 参照

database-design - 構成データを管理するための最良の方法

私は、購入したエディション、購入した追加機能などに応じて、各顧客の構成が異なるSaaSアプリケーションに取り組んでいます。たとえば、顧客のカスタムレポートは3つに制限されている場合があります。

明らかに、この構成をデータベースに保存したいのですが、最善の方法がわかりません。将来的には、データベーススキーマを変更せずに機能を追加できるようにしたいので、構成オプションごとに列を持つ単一のテーブルは意味がありません。

可能なオプションは、顧客ごとに1つのエントリがあり、その顧客の構成全体を含むXMLフィールドを持つテーブルですが、XMLスキーマが変更されて機能が追加されると、複雑さが増します。

キーと値のペアを持つテーブルを使用し、すべての構成設定を文字列として保存してから正しいデータ型に解析することもできますが、文字列構成オプション、整数構成オプション、等

人々が使用しているこのタイプのシナリオに適したパターンはありますか?

0 投票する
10 に答える
4511 参照

visual-studio - 「雲の中」のバージョン管理

私は、Microsoft Visual Studio を使用して個人プロジェクトとグループ プロジェクトの両方に取り組んでいる開発者です。VSS、SourceGear Vault、SVN など、いくつかの異なるソース管理パッケージのいずれかを自分のサーバーにセットアップし、それらにリモート アクセスすることができました。ただし、セットアップや構成などの面倒なことはしたくありません。

ホスト型ソース管理サービスを提供している人はいますか?

0 投票する
2 に答える
830 参照

.net - .NET で、マルチテナント SaaS アプリのテナントがモデルのエンティティにプロパティを任意に追加できるようにするには、どのようにアプローチしますか?

そのため、サービスとして実行するマルチテナント システムを構築しています。私たちはゼロから始めています。私たちは DDD に従っています。ドメインには (現時点で) ~20 個のエンティティがあり、後でさらに増える予定です。それは私たちによってホストされ、地理的に冗長であり (SQL クエリを除くすべての n+1 ;-))、柔軟な設計です (まあ、最後は私たち自身の要件であり、ビジネスではありません)。もちろん、必要に応じて簡単に変更できます)。私たちは .NET ベースで、バッキング ストアにリレーショナル データベースを使用します。オープンソースのツールやライブラリを使用することに (まったく) 反対しているわけではありません。

ビジネスに不可欠な機能の 1 つは、特定のエンティティがシステムのテナントによって拡張可能であることです。たとえば、クライアント A はエンティティ Foo に Title および Abstract プロパティを持たせたい場合がありますが、クライアント B はエンティティ Foo に Title Abstract ではなく Publish Date および Directed-By プロパティを持たせたい場合があります。

また、これを必要とするテナントのために複数の言語でデータをサポートする必要がある場合もあります。「静的」文字列と、エンティティにデータとして添付された文字列の両方。

そう。任意の数のフィールド (いくつかの共通のベースラインの上にあり、すべてのテナントが取得するこれらのエンティティに関する特定のものがあります)、クライアントによって定義可能です (データ型も定義できます)。データの翻訳の可能性 (エンティティを複製せずに、英語で 1 つのセットを設定せずに、フランス語で同じセットを設定せずに)。厳密に型指定された検索可能でクエリ可能なバッキング ストレージも (したがって、厳密に型指定され検索可能になる方法がない限り、XML フィールドに余分なものは入れられません)。高性能(ただし、二次的な要件として。機能は、必要に応じてハードウェアを購入するのに十分重要です)。

データ量?現在のシステムでは、「平均的な」クライアントには数百のエンティティがあり、「大きな」クライアントには数千のエンティティがあります。通常、要求はこれらのリストを 10 から 200 程度に絞り込んで表示します。最も一般的にやりたいことは、おそらく半ダースのエンティティ (新しいシステムでは拡張可能である必要があります) です。

その他のポイントは?各エンティティには、それを所有するテナントへの直接リンクがあります。

.NET ランドでこれを行うにはどうすればよいでしょうか。エンティティを IoC コンテナーに入れ、実行時にその場でまとめてグロブ化することが提案されていますが、それをリレーショナル データベースにどのようにマッピングすればよいでしょうか。

また、かなり前に Lucene.NET に関するAyende の投稿を読んだことも覚えていますが、これは良さそうですが、現時点では Lucene.NET や nHibernate を使用した経験はありません。(現在、ORM に Linq2Sql を使用する予定ですが、これをサポートするためにそれを変更する必要がある場合は、率直に言って、私は個人的に喜んでいます)。

Ayende からリンクされているこの Castle dev list スレッドを読みましたが、nHibernate には IUserType と呼ばれるものがあり、これが役立つようです。それを適用して、各テナントに適切な IoC を取得することができるのでしょうか? したがって、拡張可能エンティティごとにテナントごとに 1 つの IUserType を作成し、データ自体を SQL Server (最も可能性の高い RDBMS) 内の XML 列に格納します。

最後に、テナントごとのエンティティごとに DB テーブルを動的に変更することに関する 1 つの提案を読みましたが、これはかなり聞こえます... 正直、大変です! つまり、機能する可能性はありますが、これを行う機能をテナント (技術に精通していない可能性がある) に与えることは、それほど素晴らしいアイデアではないように思えます。管理者の従業員のみに制限できると思います...

0 投票する
5 に答える
519 参照

javascript - 座席ごとのSAAS認証

当社は、ワークステーションごとに価格設定された Web ベースのアプリケーションを作成しています。

つまり、ユーザー/パス資格情報は、特定の 1 台のマシンからのみ使用する必要があります。

現在、複数のユーザーが資格情報を共有していることが起こっており、同時に共有していない場合、これを防ぐ方法はありません。

アプリケーションの性質上、ユーザーは時々それを使用する必要があるため、同時に作業できないことはユーザーをあまり悩ませず、会社は収益を失う可能性があります。

アプリケーションは現在、Flash/ActiveX/Java アプレットを使用しない純粋な AJAX です。

理想的な解決策は、"Shell.Network" スクリプト インターフェイスを使用して JavaScript でクライアントのコンピュータ名または IP アドレスを読み取ることです。

しかし、Internet Explorer のセキュリティ設定が厳しいため、これは不可能です。クロスブラウザ機能は問題ではなく、サポートされているブラウザは IE だけです。

Google を検索すると、ここでこのソリューションに出くわしましたhttp://www.reglos.de/myaddress/MyAddress.htmlですが、JAVA アプレットが必要なため、あまり便利ではありません。

これに対する他の解決策はありますか?

0 投票する
2 に答える
458 参照

lamp - LAMP SaaS Web アプリケーションで帯域幅の使用を測定して制限する最良の方法は何ですか?

私が働いている会社は、計画ベースの LAMP SaaS Web アプリケーションの開発を考えています。外部参照が含まれており、サードパーティのサイトに iframe または JavaScript スニペットを配置することで帯域幅を消費するため、使用状況を監視したいと考えています。最初はページ インプレッション アルゴリズムだけに頼っていたのですが、これは実際には帯域幅の問題であるため、監視したほうがよいのではないでしょうか。上限を超えたというメッセージをサードパーティのサイトに送信できるように、この監視を行う最善の方法は何ですか?

0 投票する
7 に答える
2347 参照

svn - ホストされた転覆の推奨事項または提案

仕事で新しいプロジェクトのためにホストされたサブバージョンを使用して調査していて、誰かが共有する経験を持っているかどうか疑問に思っていました.

私は個人的に自宅で小規模なプロジェクトにBeanstalkを使用しましたが、複数のユーザーや大規模なリポジトリでは使用しませんでした。

何を/誰を使ったことがありますか?

プロジェクトの規模と種類は?

あなたの経験は何ですか?(稼働時間、パフォーマンス、顧客サービスなど)

0 投票する
3 に答える
713 参照

mysql - 効率的なフィルタリング/検索

コンテンツのページを管理するホストされたアプリケーションがあります。各ページには、多数のカスタマイズされたフィールドといくつかの標準フィールド (タイムスタンプ、ユーザー名、ユーザーの電子メールなど) を含めることができます。

何百もの異なるサイトがシステムを使用している可能性があるため、フィルタリング/検索を処理する効率的な方法は何ですか? 絞り込みたいグリッド ビューを想像してください。特定のフィールド (ユーザー ID、日付) でフィルタリングするか、全文検索を入力できます。

たとえば、「ユーザー ID 10 で開始されたすべてのページ」は、MySQL データベースに対する非常に迅速なクエリです。しかし、「userid が 10 で [一部の検索クエリ] に一致するユーザーによって開始されたすべてのページ」のようなものは、データベースに悪影響を与えるため、Lucene のような検索エンジンに適しています。

基本的に、他の大規模サイトがこの種のことをどのように行っているのか疑問に思っています. すべての種類のフィルタリングに検索エンジンを 100% 利用していますか? データベースクエリと検索エンジンを混在させていますか?

検索エンジンのみを使用すると、新しい/更新されたオブジェクトが検索インデックスに表示されるまでにかかる遅延時間に問題があります。つまり、インデックスをすぐに更新するのは賢明ではなく、代わりにバッチで行うのは賢明ではないことを読みました。これが 5 分ごとを意味する場合でも、単純なページ リスト (「カテゴリ:5」の検索クエリなど) を表示したときに、最近追加されたページがすぐに表示されないと、ユーザーは混乱します。

私たちは MySQL を使用しており、検索用に Lucene を詳しく調べています。私が知らない他の技術はありますか?

私の考えは、MySQL を使用して基本的なフィールドをフィルタリングする単純なフィルタリング ページを提供することです。次に、Google と同様の結果を表示する別の全文検索ページを提供します。これが唯一の方法ですか?

0 投票する
4 に答える
637 参照

asp.net-mvc - ASP.NET でのアカウント ベースのルックアップ

新しい SaaS サービスに ASP.NET を使用することを検討していますが、ほとんどの SaaS アプリケーション (37Signals など) のように、サブドメインに基づいてアカウントを検索する方法がわかりません。

たとえば、yourname.mysite.com を提供する場合、ASP.NET (具体的には MVC) を使用してサブドメインを抽出し、適切なテンプレート (会社名などを表示) をロードするにはどうすればよいでしょうか? 通常のルーティングで実行できますか?

これは SaaS では一般的であるように思われるため、ASP.NET で簡単に実行できる方法が必要です。Ruby on Rails のような他のフレームワーク用のプラグインがあることは知っています。