BentyTypesは、一般的なデータ型システムを使用して、単一の厳密に統合されたシステムで、データベース、プログラミング言語、通信プロトコル、ファイルシステム、ドキュメントマネージャー、オペレーティングシステム、フレームワーク、ファイル形式、ハードウェアなど、他のシステムの特性を統合する標準ベースの情報ストレージ、処理、および伝送システムです。
参照実装はJava 17でプログラムされており、PostgreSQL 15データベースマネージャーを使用しています。 Apache 2.0ライセンスの下で、簡単にインストール可能な戦争ファイルに配布されます。ソフトウェアインターフェイス(読み取り専用モード)をテストするために、インストールする必要なく、Saidソフトウェアを使用して開発されたProject Webサイトを探索できます。左側のメニュー、「コントロールパネル」セクション、およびページの上/右側のボタンには、利用可能なアクションがあります。
BETTYPESは、数字、テキスト、バイナリ、日付、JSON、XMLなどのプリミティブポストグレスクルデータ型を統合しますが、命名法を簡素化し、他のシステムとの統合を促進するために異なる名前を与えます。たとえば、「smallint」、「integer」、および "bigint" root "int"を使用する代わりに、ビット数(int16、int32、およびint64)が使用されるか、一部のプログラミング言語のように「文字列」を「文字列」とする代わりに使用します。
また、HTMLやURLなどの他のタイプのデータを追加し、PostGreSQL機能を使用して、列のコンポジットデータ型を作成して、ファイル、ドキュメント、画像、オーディオ、ビデオのデータ型が含まれます。これらのフィールドのバイナリ含有量は、クラマブアンチウイルスでスキャンできます。 HTMLや画像などの複雑なデータ型は、個別にアクセスできる要素で構成されており、許可されているタグや形式など、それらに制限を適用できます。
ストレージシステムは主にSQLベースですが、リレーショナル/ネットワーク/オブジェクト/ファイルハイブリッドです。各テーブルはデータ型であり、テーブル内の各行はオブジェクトです。各行には、識別子(ID)を備えた列があり、ファイルのメタデータと同様のメタデータを含むいくつかの列があります:作成日(CDATE)、更新日(UDATE)、バックアップ(バックアップ)。残りの列は、オブジェクトのデータフィールドです。データ型の作成日(CDATE)と変更(ADATE)も保存されます。日付はUTC標準を使用し、時間、数分、秒、マイクロ秒を含みます。 ISO 8601標準は、テキストの表現に使用されます。
オブジェクトのフィールドは、識別子を外部キーとして使用して他のオブジェクトをプリミティブなタイプであるか、ネットワークデータベースを形成することができます。識別子は一意のインデックスを持つテキスト文字列であり、デフォルトではUUIDを受信します。プライマリおよび外国のキーのこの簡素化と均一性は、他のシステムとの自動化と統合を促進します。
エンティティ関連モデルとの対応は、リレーショナルモデルの対応と類似しています。各エンティティはオブジェクトであり、属性はフィールドであり、関係と複数の属性は他のオブジェクトを参照するフィールドで作成されます。
オブジェクト識別子とフィールドは、非ユニークで一意の、フルテキスト検索インデックスの一部です。データ型とオブジェクトの定義は、JSONとの間でエクスポートおよびインポートすることができ、バックアップコピーとシステム間の情報の転送を許可します。
{
「名前」:「article_language」、
「cdate」: "2015-04-01t14:30:16z"、
「Adate」: "2018-09-26T14:59:35.53Z"、
「フィールド」:{
"タイトル" : {
「タイプ」:「文字列」、
「長さ」:254、
「not_null」:本当です
}、
"言語" : {
「タイプ」:「言語」、
「長さ」:100、
「not_null」:本当です
}、
"文章" : {
「タイプ」:「HTML」、
「not_null」:本当です
}、
"記事" : {
「タイプ」:「記事」、
「長さ」:100、
「not_null」:本当です
}
}、
「インデックス」:{
"al_ft_search_index":{
「モード」:「フルテキスト」、
「フィールド」:[「タイトル」、「テキスト」]
}
}、
「アクション」:{}
}変更と更新の日付により、楽観的な並行性制御システムの実装が可能になります。タイプを変更したり、オブジェクトを更新した場合、最後の既知の変更日が示されている場合、システムは、この日付がタイプまたはオブジェクトの現在の日付と同じであることをチェックして、後日別のユーザーによって変更されたことを除外します。
「バックアップ」メタデータは、指定された数の増分コピーがそれぞれ完全なコピーを持つ更新されたオブジェクトのインクリメンタルバックアップシステムを作成するために使用されます。オブジェクトが更新されるたびに、メタデータの「バックアップ」が「false」に変更され、そのオブジェクトのコピーがなく、次のバックアップでコピーする必要があることを示します。
トランザクションDDLや延期可能な制約などのPostGreSQL機能を使用することにより、システムが使用中に同じトランザクションでさまざまなデータ型とオブジェクトを作成または変更できます。
フルテキスト検索システムを補完するために、PDF、OpenDocument、Office Open XMLドキュメントからのメタデータとテキストの抽出、Microsoft Officeバイナリ形式、およびその他の形式をTikaを使用して追加します。
Benttypesは、プログラミング言語からの使用と自動化を促進するオブジェクト指向の機能を備えた主にリレーショナルシステムです。オブジェクト関連システムとは異なり、オブジェクトクラスの対応は使用せず、代わりに、作成、読み取り、更新、削除の基本的なアクション(CRUD)を実行できるすべてのタイプとオブジェクトに一連の一般的なクラスとメソッドを使用します。
いくつかのテーブルを使用するクエリなどの複雑なアクションの場合、SQLの使用を容易にし、ストレージのデータ型と統合するJDBCよりも高いレベルの抽象化を備えたシステムを提供します。このシステムにより、単一のメソッドの実行でパラメーター化されたクエリが可能になり、テーブルと列名をパラメーターとして使用します。これは、SQLインジェクションに対する保護を提供します。また、配列をパラメーターとして使用することもできます。
基本的なアクションは、SQLトリガーと同様に傍受して、タイプまたはオブジェクトを変更したり、追加のアクションを実行したりできます。さらに、新しいアクションを定義し、システムで利用できるようにすることができます。
Javaの実装では、数字などのストレージ内のいくつかのプリミティブデータ型は、Javaランタイム環境のクラスと直接対応しています。 HTML、ドキュメント、画像、またはビデオなどの他のタイプの場合、システムにはストレージタイプと統合され、データの作成と変更を可能にするクラスがあります。
使用される主なプロトコルはHTTPですが、他のプロトコル用にアダプターを作成できます。システムには、電子メールの受信とオブジェクトへの変換を可能にするSMTPアダプターが含まれています。 HTTPに加えて、X.509証明書とパスワード(BCRYPTで暗号化された)、HTTP Basic Auth、DOS攻撃に対する保護、ロボットファイルおよびWebサイトマップの管理を介して認証を備えたRESTインターフェイスが構築されます。このインターフェイスにより、1つのURLを使用して、すべてのタイプのデータ、オブジェクト、フィールド、および要素にアクセスできます。
ストレージ、処理、および送信システムは、HTML、WebDav、CalDav、JSON、XML、RSS、IcalEndarまたはその他のシステムなど、さまざまなビューまたは形式を介してデータへのアクセスを可能にするMVCシステムを形成します。これらの各ビューは、あらゆる種類のデータまたはオブジェクト、またはそれらの一部について変更して、ユーザーのニーズに合わせて変更できます。 UTF-8エンコーディングは、システム全体で使用され、異なる言語でテキストを使用できるようにします。
HTMLビューは、ストレージ/処理システムのすべてのアクションを実行できるレスポンシブで多言語グラフィカルインターフェイスを提供します。 HTML5/CSS3で、SVGの再配置可能なアイコン、WCAGコンプライアンス、構文強調表示(CodeMirror)またはWysiWyg(Tinymce)を備えたテキストエディター、CSRFおよびXSSに対する保護を備えたプログラムされています。このビューでは、HTML5データ型をNextTypesのデータ型と統合し、必要なコンポーネントをインターフェイスに追加して、HTML5が提供するコントロールを補完します。 「例」データ型では、すべてのプリミティブデータ型とオブジェクト参照のコントロールを見ることができます。 DOMを変更することにより、HTMLビューを適応させることができます。
各オブジェクトには、サーバーの名前、データのタイプ、およびオブジェクトの識別子の識別QRコードがあります。このコードは、実際のオブジェクトにラベルを付けたり、モバイルアプリケーションから読み取ったりするために使用できます。また、JSON-LD形式でいくつかのデータをエクスポートする可能性もあります。
他のビューでは、システムによるデータへのリモートアクセスが可能になります。 JavaScriptとJSONまたはXMLビューを使用することで、すべてのデータにアクセスしてブラウザで情報処理を実行することができます。 WebDAVビューを使用すると、データ型とオブジェクトがフォルダーであり、フィールドがファイルであるファイルシステムとしてデータにアクセスできます。これにより、外部アプリケーションを使用してオブジェクトのフィールドを開いて変更できます。たとえば、ワードプロセッシングアプリケーションでドキュメントフィールドを編集できます。
CalDAVビューは、カレンダーイベントとしていくつかのオブジェクトを公開できるWebDAVビューの変更です。これらのイベントには、IcalEndarビューを使用してアクセスすることもできます。 RSSビューでは、その形式の任意のクライアントを使用してオブジェクトリストにアクセスできます。