sqltoy-orm-4.16.7リリース、一部の機能とコメント用に最適化

ありがとう:

ネチズンの積極的な参加とフィードバックのおかげで、mssqlのページングをトップシーンにインテリジェントに適応させました!

オープンソースアドレス:

コンテンツを更新する

1. sqlserverページングステートメントの判断によって順序を拡張および最適化し(最上位のサブクエリは順序を指定できます)、開発者が手動で順序を追加することを回避し
ます。2。save()、update()、query()などのチェーン操作を変更します。推奨される使用法

このバージョンは最適化されたバージョンであり、既存の機能には影響しません。開発者は選択的にアップグレードできます

sqltoy-ormが最も価値がある理由を分析してください!

あなたの問題点と要求を分析して、私たちはほとんどの人が遭遇する問題を3つの段階に分けます:

  • プライマリステージの要件(単一のライブラリ、crud +いくつかのより複雑なクエリ)
  1. save(entity)\ update \ saveOrUpdate \ saveAll \ updateAll、loadById()などのjpaスタイルのオブジェクト操作がシンプルで快適であることを望んでいます。
  2. 単純なクエリがオブジェクトチェーン操作モードになり得ることを願っています
  3. 複雑なクエリをSQLに直接書き込んで、SQLの最適化を容易にし、SQLファイルの更新をホットアップデートできることを願っています。
  4. SQLインジェクションの問題を抱えたくない
  5. それがページングを容易にすることができることを願っています
  • 中間段階のアピール(いくつかの複雑なシーンについて考え始め、クラッドはもはや焦点ではなくなり、クエリの問題が顕著になり始めます)
  1. 一意性の検証、トップレコード、ランダムレコードなどの既成の方法を提供します
  2. 分散型で同時性の高いシナリオに遭遇した場合は、主要なキー生成戦略の要件を考慮してください。たとえば、従来のjpa更新操作では、nullカバレッジを回避できないため、最初にロードしてから更新する必要があります(同時性が高いと、他の更新されたコンテンツが簡単に上書きされます)
  3. 製品を複数のデータベースに適用する必要がある場合は、ツリー構造の再帰クエリ、group_concat、その他の関数の適応など、myql、oracle、mssql、postgresなどでSQLを実行できることを期待しています。
  4. ビジネスの成熟に伴い、企業の管理はデータに重点​​を置き始め、クエリと統計の要件が高くなりました(ただし、クエリの要件は変更されることがよくあります)。そのため、SQLの動的条件が長くなる割合が増えています。
  5. データのローテーション、前年比の比較など、いくつかの複雑な統計上の問題が発生しました。純粋なSQLは複雑すぎて記述できず、データベースを変更することは普遍的ではありません。
  • 高レベルの要件(ETL(バッチの実行+リアルタイム処理のストリーム)+極端なクエリ、この段階でのクエリの問題は非常に顕著であり、パフォーマンスが低下し、ユーザーエクスペリエンスが非常に悪くなります)
  1. データスケールの拡大により、旧式のテーブルパーティショニングもサポートが難しく、テーブルとデータベースに分割する必要があります。
  2. ビッグデータと高い同時実行性のため、クエリのパフォーマンスには極端な要件が課せられます
  3. 従来のデータベースは、大規模なデータやビジネスの多様性によってもたらされる要件を満たすことができません。セグメント化して、mongodb、elastic、clickhouseなどと組み合わせて使用​​する必要があります。
  • sqltoy-ormは上記のプロセスの控除です
  1. sqltoyは当初、休止状態のjpaの補足であり、クエリを拡張するために使用されていましたが、プロジェクトにあまり多くのテクノロジーを導入したくなかったため、sqltoyは休止状態のjpaの機能を実現すると同時に、欠点を完全にし、正式にORMフレームワークと呼びました。
  2. Sqltoyは、個人がチームを率いてさまざまな金融会社のプロジェクトを行う過程で育ちました。会社ごとにデータベースが異なり、金融会社のデータ規模は基本的に数百万であるため、基本モジュールはさまざまなデータベースに適用できる必要があります。
  3. sqltoyは、Lakala Payment Groupのデータチームを個人的に担当する場合、1回のトランザクションテーブルで1日平均1,300万(2017年末)および年間平均30億を経験した、大規模なETL(ハイブ+スパーク実行バッチおよびストリーミングリアルタイム)バプテスマの基盤です。 Oracleオールインワンマシン、インデックス最適化、テーブルパーティショニング、メモリテーブル、テーブルサブデータベース、キャッシュ変換、極端なページングなどのさまざまな戦略をサポートすることは困難です。mongo、elasticsearch、clickhouseを組み合わせてテーマ別アプリケーションを組み合わせると、うまく解決できます。 。
  4. 2018年から、sqltoyは現在の会社のerp複雑なシーンのバプテスマを経験し、成熟しました。
  5. 2020年4月のsqltoyのオープンソースプロモーションから、多くのフィードバックを受け取り、肯定的な反応と改善を組み合わせて、sqltoyは基本的にさまざまなエッジシナリオのカバレッジを完了しました!
  • sqltoyのいくつかの特徴を簡単に紹介します
  • sqltoyのjpaスタイルの追加、削除、および変更

これらはすべてsqltoyLazyDao.save(entity)モードと同様の単純な操作に基づいていますが、sqltoyの更新、saveOrUpdate、updateFetchなどはすべて内部で最適化されているため、ここではあまり紹介しません。利点はありますが、重要な紹介としてではありません。

  • sqltoyは、最も簡潔で動的なsql書き込みを提供します

mybatisの実装を比較してみましょう(読みやすさ、保守性などの観点から)

  • 変換をキャッシュし、キャッシュを使用して関連するクエリを減らし、SQLを簡素化し、効率を大幅に向上させます

  • 極端なページングの最適化

  • 並列クエリ
// 使用并行查询同时执行2个sql,条件参数是2个查询的合集
String[] paramNames = new String[] { "userId", "defaultRoles", "deployId", "authObjType" };
Object[] paramValues = new Object[] { userId, defaultRoles, DEPLOY_ID,GROUP };

List<QueryResult<TreeModel>> list = super.parallQuery(
		Arrays.asList(ParallQuery.create().sql("webframe_searchAllModuleMenus").resultType(TreeModel.class),
				ParallQuery.create().sql("webframe_searchAllUserReports").resultType(TreeModel.class)),
		paramNames, paramValues);
  • データローテーション

  • 無限の極グループ統計(要約と平均を含む)、アルゴリズム構成はシンプルでクロスデータベースです!
  • YoY MoM

おすすめ

転載: www.oschina.net/news/119511/sqltoy-orm-4-16-7-released