弱类型对象的数据库

时间:2016-09-06 07:52:41

标签: json database algorithm store nosql

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

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

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

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

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

使用此“存储库”的过程:

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

  2. 当我的应用程序决定现在检查哪组对象是实际的时,它来到存储库并询问:“在这里你是一个TypeId并请,通过每个过滤器+对象对,并说明实际的对象是什么过滤器。如果你需要解决一些过滤器值(从上面的示例中进行定位),我会为你解决它们。“

  3. 然后,存储库遍历每个对象,并现在比较哪些是过滤器实际的,哪些不是,并给应用程序实际。所以他检查每个对象的每个过滤器,只有当它们都是实际的并且他在运行时才这样做时才给它。

  4. 在当前实现中,这组fiters +对象以非常特定的xml格式存储在xml文件中,这很容易从app中读取,但很难由人类维护。我认为有一些地方可以优化所有流程。我认为我们可以委托走过Objects并将其过滤器与其他人进行比较。 现在我认为在NoSQL面向文档的数据库方面。因为每个对象都有自己独特的结构,并且可能使用选择例程,我可以选择我需要的东西。

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

1 个答案:

答案 0 :(得分:0)

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

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

create table Object1 (field1, otherObjectSpecifiedField);

然后该表可以插入数据:

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

过滤使用标准SQL:

select * from Object1 where field1 = "field1value";

正如我所提到的,这也可以通过NoSQL数据库完成,例如MongoDB。在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" } */