kevy がやらないこと
プロダクトの形は、備える機能と同じくらい、拒むものによって決まります。 このページは kevy の拒否を一箇所に集めたものです——「X はできるか」の 答えが、それを前提に作り始める前に手に入るように。各項目は理由と、 その要求を代わりに何が満たすのかを書いています。
ここでの拒否は恒久的です。「まだ」ではありません——設計がそれを前提に 組まれている線であり、そのうちの一本を変えることは、機能追加ではなく再設計です。
4 本の線
1. Redis の契約は私たちが変えていいものではない。 kevy が Redis の コマンド名で答えるものは、Redis がその名で意味するものです。新しい能力 は既存の動詞に載せるのではなく、自分の名前空間(IDX.*、FEED.*、 VIEW.*、FT.*、VEC.*)で来ます。ですから「改良版」の SET セマン ティクスはありませんし、既存の応答形状にフィールドを足すこともしません。
2. 意味と実行計画はアプリケーション側に残す。 kevy は保存して返す のであって、データが何を意味するかも、クエリをどう実行すべきかも決め ません。この線が拒むのが、クエリ言語としての SQL、join、コストベース プランナです。エンジンが計画を選んだ瞬間、あなたのレイテンシには、 あなたが下しておらず見ることもできない決定が混ざります。代わりに提供 するのは宣言されたアクセスパスです——索引はあなたが名指しし、コスト はあなたが予測できます。
3. トポロジは宣言するものであって、発見するものではない。 メンバー 表は設定から来ます。動的なのはロールで、メンバーシップではありません。
4. ネットワークは信頼される前提。 kevy は認証も転送暗号化も恒久的に 行いません——その両方を備えたプロキシ(Caddy、nginx、サービスメッシュ、 あるいはプライベートサブネット)の後ろに置いてください。
拒否一覧(領域別)
| 領域 | 拒否するもの | 理由と、代わりに使うもの |
|---|---|---|
| クエリ | クエリ言語としての SQL、join、コストベースプランナ、ビュー層の場当たり述語 | 線 2——索引かビューを宣言する。IDX.QUERY / VIEW.QUERY がアクセスパスを明示的に名指しする |
| クエリ | 書き込みパスのコールバック / トリガ | 書き手は自分が何を書いたか既に知っている。コールバックは書き込みの中にレイテンシを隠す |
| セキュリティ | AUTH、TLS、ACL、マルチユーザ | 線 4——プロキシ層で終端する |
| クラスタ | シャード化マルチマスタ、DC 間アクティブ・アクティブ、CRDT | 設計上シングル DC・単一分断耐性。競合のないマージはアプリ層のモデル |
| クラスタ | Raft / 強一貫ログレプリケーション | この設計が提供する一貫性は quorum lease と epoch フェンス。完全な合意ログは別のプロダクト |
| クラスタ | オンライン resharding、gossip 探索、動的メンバーシップ | 線 3——設定を変えてそのメンバーを再起動する |
| ストレージ | ストア横断トランザクション、テナンシ意味論 | エンジンの境界の外。その上で組む |
| プラットフォーム | サーバーの no_std / MCU ターゲット | 5 つの stone クレートは既に no_std 対応。サーバーには OS が要る |
関数面の現在地
kevy の SQL 形状の面は畳み込み器であって、クエリエンジンではあり ません。リレーショナルデータベースから移ってくるアプリがスカラ式を実装 し直さずに済むよう、それを計算します。そしてプランナを要するものは 名指しで拒否し、決して黙って落としません。
変更のたびに 2 本の線で止められます:
- 能力:この弧が提供すると宣言した関数サブセットのうち 82.5% が 正しく畳めること。この比率は上げることしか許されません。
- 誠実さ:89 個のプローブファイル全体で誤答ゼロ。拒否は自ら 名乗りますが、誤答は名乗りません。
これに依存するかを決めるときに見るべきは 2 本目です。拒否は呼び出し箇所 で見えるので、本番ではなくコードを書いている最中に見つかります。