弱类型对象数据库

Posted

技术标签:

【中文标题】弱类型对象数据库【英文标题】:Database of weakly typed objects 【发布时间】:2017-01-13 14:00:59 【问题描述】:

我想组织我的系统的某些部分,但我无法选择方便的数据表示形式来与我的应用程序交互。 所以我有一些数据对象的本地“存储库”,描述如下:

Object1
 id = TypeId, field1 = value1, otherObjectSpecifedField = value2 ... 
...

有许多类型的对象(例如 1000 个)(例如 50 个)。每种类型都有自己的 UniqueId 以及自己的描述和字段集。

接下来的事情是,对于 每个 对象,我有一组过滤器,这对应于该对象现在是实际的。它看起来像这样:

Filter
 filterName1 = filterValue, filterName2 < filterValue 
Object // filter is applied for this object
 ... 

使用这个“仓库”的过程:

    在我的应用程序中,我有应用程序状态,这意味着来自上方的过滤器。 示例:应用程序本地化可以是“en”(我的应用程序知道这个值并且可以在启动时更改它)并且我们有过滤器,名为“localization”,在我们的存储库中我们可以像这样使用它: Filter localization = 'en' Object1 ... // this object i should choose when localization is en

    1234563过滤器。如果您需要解析一些过滤器值(来自上面示例的本地化),我会为您解析它们”。

    然后存储库遍历每个对象并比较过滤器现在哪些是实际的,哪些不是,并将实际提供给应用程序。因此,他检查每个对象的每个过滤器,并仅在它们都是真实的并且他在运行时执行时才提供它。

在当前实现中,这组 fiters + 对象以非常特定的 xml 格式存储在 xml 文件中,从应用程序中读取起来很舒服,但很难由人维护。而且我认为有一些地方可以优化所有流程。我认为我们可以委托遍历对象并将其过滤器与其他人进行比较。 现在我认为在 NoSQL 面向文档的数据库方面。因为每个对象都有他独特的结构,也许使用选择例程我可以选择我需要的。

也许有人对这种类型的数据库组织有任何建议?也许您知道该类型数据的一些特定数据结构?

【问题讨论】:

【参考方案1】:

也许我错过了一些东西,因为在我看来你有许多不同类型的对象:每个TypeId 一个类型。如果是这样,那么我认为这可以使用标准 SQL 数据库来完成,假设对象中的字段具有一致的类型。如果没有,仍然可以使用 NoSQL 数据库完成。

在 SQL 数据库中,您可以为每种类型使用单独的表(因为它们都有自己的一组字段),并使用 SQL 搜索相应的表。因此,例如,您可以创建一个包含两个字段的表(我在这里使用 SQLite,它不需要字段类型):

create table Object1 (field1, otherObjectSpecifiedField);

然后可以在此表中插入数据:

insert into Object1 values ("field1value", "otherfieldValue");

过滤使用标准 SQL:

select * from Object1 where field1 = "field1value";

正如我所提到的,这也可以通过 MongoDB 等 NoSQL 数据库来完成。在 Mongo CLI 中看起来像这样:

创建表并插入第一个对象:

db.test.insert( id: "TypeId", field1: "value1", otherObjectSpecifedField: "value2");

从表格中选择一个对象:

db.test.find(id: "TypeId", field1: "value1");
/*  "_id" : ObjectId("57cf97060216d33b891615ba"), "id" : "TypeId", "field1" : "value1", "otherObjectSpecifedField" : "value2"  */

【讨论】:

以上是关于弱类型对象数据库的主要内容,如果未能解决你的问题,请参考以下文章

javascript基础

强引用软引用弱引用幻象引用有什么区别和使用场景

javascript中的内置对象和数据结构

ES6 Set,WeakSet,Map,WeakMap

Java 虚拟机原理Java 引用类型 ( 强引用 | 软引用 | 弱引用 | 虚引用 | 静态变量 )

JavaScript的数据类型