KR20090065136A - Method of data storing in memory page with key-value data model - Google Patents
Method of data storing in memory page with key-value data model Download PDFInfo
- Publication number
- KR20090065136A KR20090065136A KR1020070132588A KR20070132588A KR20090065136A KR 20090065136 A KR20090065136 A KR 20090065136A KR 1020070132588 A KR1020070132588 A KR 1020070132588A KR 20070132588 A KR20070132588 A KR 20070132588A KR 20090065136 A KR20090065136 A KR 20090065136A
- Authority
- KR
- South Korea
- Prior art keywords
- page
- key
- data
- column
- value
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
Abstract
Description
본 발명은 키-값 데이터 모델에 적합하고, 컬럼 페이지를 키 페이지와 값 페이지로 구성함으로써 캐시를 최적화할 수 있는 메모리 페이지 내의 데이터 저장방법에 대한 것이다.The present invention relates to a method for storing data in a memory page that is suitable for the key-value data model and that can optimize the cache by configuring column pages into key pages and value pages.
본 발명은 정보통신부 및 정보통신연구진흥원의 IT신성장동력핵심기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다 [과제관리번호:2007-S-016-01, 과제명: 저비용 대규모 글로벌 인터넷 서비스 솔루션 개발].The present invention is derived from the research conducted as part of the IT new growth engine core technology development project of the Ministry of Information and Communication and the Ministry of Information and Communication Research and Development. [Task Management Number: 2007-S-016-01, Title: Low-cost large-scale global Internet service solution Development].
기존의 디스크 기반 관계형 데이터베이스 환경에서, 질의 처리 연산을 위해 디스크에 저장되어 있는 해당 페이지를 메인 메모리 내에 적재하여 페이지에 저장되어 있는 데이터 구성을 해석하고, 이 데이터의 일부분이 캐시에 적재되어 처리한다. In the existing disk-based relational database environment, the corresponding page stored in the disk is loaded into main memory for query processing, and the data structure stored in the page is interpreted, and a part of the data is loaded into the cache and processed.
이때 질의 패턴에 따라 메인 메모리 페이지에 적재된 데이터에 대한 접근 패 턴이 다르므로, 가능한 한 캐시 미스를 최소화할 수 있는 페이지 구성이 필요하다.At this time, since the access pattern for the data loaded in the main memory page is different according to the query pattern, it is necessary to construct a page that can minimize the cache miss as much as possible.
일반적으로 상용 관계형 데이터베이스들은 레코드 기반으로 데이터를 디스크에 저장하므로 NSM (N-ary Storage Model)을 사용하여 메모리 페이지 내에 데이터 레코드를 구성하고 있다. NSM은 메모리 페이지 내에 데이터를 레코드 단위로 순차적으로 저장하고 페이지의 마지막에 오프셋 테이블(offset table)을 두어 각 레코드의 위치를 저장하고 있다. 하지만 대부분의 질의(query)는 레코드의 일부분, 즉 일부 컬럼만을 사용하므로 연산에 필요없는 데이터까지 캐시에 적재되어 메인 메모리와 캐시 사이에 불필요한 I/O가 발생하는 문제점이 있다.In general, commercial relational databases store data on disk on a record-based basis, which uses the N-ary Storage Model (NSM) to organize data records within memory pages. The NSM stores the data sequentially in record units in a memory page and places an offset table at the end of the page to store the position of each record. However, since most queries use only a part of a record, that is, some columns, data that is not required for operation is loaded into the cache, causing unnecessary I / O between the main memory and the cache.
이를 최소화하기 위해 DSM (Decomposition Storage Model)이 제안되었다. DSM은 n개의 컬럼으로 구성된 레코드를 수직으로 분할하여 n개의 서브 릴레이션으로 분할한 후 디스크에 저장하는 방법으로, 메모리 페이지를 컬럼 별로 구성하는 방법이다. 하지만 질의가 여러 컬럼으로 구성될 경우 각 컬럼이 저장되어 있는 여러 개의 페이지 접근이 필요하고, 서브 릴레이션 간의 조인으로 인해 오히려 성능이 떨어지는 문제가 발생한다.In order to minimize this, a Decomposition Storage Model (DSM) has been proposed. DSM divides records consisting of n columns vertically, divides them into n sub relations, and stores them on disk. A DSM is a method of organizing memory pages by columns. However, when a query is composed of several columns, multiple page accesses are stored, and the performance decreases due to joins between sub-relations.
이러한 DSM의 문제점을 해결하기 위해 제안된 PAX (Partition Attributes Across)는 디스크에는 레코드 기반으로 저장되어 있으나 메모리 내에 적재시 메모리 페이지를 서브 파티션으로 나누어 각 컬럼 별로 같은 파티션에 함께 저장함으로써 특정 컬럼만을 접근시 메인 메모리와 캐시 간의 캐시 미스를 최소화하는 방법이다.PAX (Partition Attributes Across) proposed to solve this problem of DSM is stored on disk based on records, but when loaded in memory, memory pages are divided into subpartitions and stored in the same partition for each column to access only specific columns. This method minimizes cache misses between main memory and the cache.
최근엔 대용량의 데이터 관리를 위해 범용의 관계형 모델 대신 응용에 특화 된 데이터 관리 시스템이 제안되고 있다. 키-값 데이터 모델은 대용량의 데이터를 기반으로 서비스하는 응용 환경을 고려하여 키 기반의 접근을 지원하는 모델이므로 이에 맞는 메모리 내 페이지 구성이 요구된다.Recently, data management systems specialized for applications have been proposed instead of general-purpose relational models for managing large amounts of data. The key-value data model is a model that supports key-based access in consideration of an application environment that services based on a large amount of data. Therefore, an in-memory page configuration is required.
본 발명은 키-값 데이터 모델에 적합한 메모리 페이지 내의 데이터 저장방법을 제공함으로써 캐시를 최적화하는 방법을 제공하는 데 그 목적이 있다.It is an object of the present invention to provide a method for optimizing the cache by providing a data storage method in a memory page suitable for the key-value data model.
전술한 목적을 이루기 위하여, 본 발명은 메모리 내 페이지를 관리하기 위한 정보를 저장하는 페이지 헤더를 저장하는 단계와, 로우 키 및 각 컬럼의 저장 위치에 대한 정보를 포함하는 로우 키 페이지를 생성하는 단계와, 셀 키를 저장하는 키 페이지와 데이터를 저장하는 값 페이지를 구분하여 컬럼 페이지를 생성하는 단계를 포함하는 캐쉬 최적화를 위한 메모리 페이지 내 데이터 저장 방법을 제공한다.To achieve the above object, the present invention provides a method for storing a page header that stores information for managing a page in memory, and generating a low key page including information about a row key and a storage location of each column. And generating a column page by dividing a key page for storing a cell key and a value page for storing data, and providing a data page in a memory page for cache optimization.
본 발명의 다른 면에 따라, 페이지 헤더에서 로우 키 페이지의 위치정보를 획득하고, 이를 기초로 로우 키 데이터를 획득하는 단계와, 상기 로우 키 데이터를 기초로 해당 컬럼의 키 페이지 및 값 페이지의 위치정보를 획득하는 단계와, 상기 키 페이지의 위치 정보를 기초로, 셀 키를 검색하는 단계와, 상기 값 페이지의 위치 정보를 기초로, 해당 값 데이터를 검색하는 단계를 포함하는 캐쉬 최적화를 위한 메모리 페이지 내 데이터 검색 방법을 제공한다.According to another aspect of the present invention, obtaining location information of a row key page from a page header, and obtaining row key data based on the location information, and position of a key page and a value page of a corresponding column based on the row key data. Obtaining information, retrieving a cell key based on location information of the key page, and retrieving corresponding value data based on location information of the value page; Provides a way to retrieve data within a page.
본 발명에 따르면, 키-값 단위로 데이터를 분할하여 메인 메모리 내의 페이지에 저장함으로써, 캐시 미스의 발생을 현저히 감소시켜 캐시를 최적화할 수 있다.According to the present invention, by dividing data into key-value units and storing the data in a page in the main memory, the cache miss can be significantly reduced to optimize the cache.
이하에서는, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세히 설명한다.Hereinafter, with reference to the accompanying drawings a preferred embodiment according to the present invention will be described in detail.
키-값 데이터 모델은 하나의 로우(row)가 키와 여러 개의 컬럼(column)으로 구성되고, 각 컬럼에는 다수 개의 데이터(여기서 개개의 데이터를 셀이라 칭하기로 한다.) 저장이 가능하다. 셀은 로우 키와 컬럼에 의해 액세스되는 데이터 값으로 키-값의 집합으로 구성된다. 데이터의 검색은 키를 기반으로 접근하는 단순한 모델의 경우, 로우 키를 기반으로 로우 데이터 또는 로우의 일부 컬럼을 검색할 수 있고, 특정 컬럼의 셀 키를 기반으로 데이터를 액세스할 수 있다. In the key-value data model, one row is composed of a key and several columns, and each column can store a plurality of data (herein, individual data is called a cell). A cell consists of a set of key-values with data values accessed by row keys and columns. In the simple model of accessing data based on a key, the data may be searched based on a row key or a part of a row of a row, and the data may be accessed based on a cell key of a specific column.
또한 키-값 데이터 모델은 접근 패턴에 최적화된 저장을 통하여 디스크 I/O를 줄일 수 있도록, 같이 활용되는 컬럼 데이터들을 같이 저장할 수 있는 방법을 제공한다. 즉, 하나 이상의 컬럼으로 구성되는 컬럼그룹(column group)을 정의할 수 있으며, 컬럼그룹 단위로 디스크에 저장한다.In addition, the key-value data model provides a way to store the column data used together to reduce disk I / O through optimized storage for access patterns. That is, a column group consisting of one or more columns can be defined and stored in disk in units of column groups.
상기와 같은 키-값 모델에서 캐시 성능 최적화를 위해 다음과 같이 메모리를 구성한다.In the above key-value model, memory is configured as follows to optimize cache performance.
키-값 데이터 모델은 컬럼그룹 단위로 디스크에 데이터를 저장함으로써 메인 메모리에 적재시 필요한 데이터만 적재되어 캐시를 최적화 할 수 있다. The key-value data model stores data on disk in column group units to optimize the cache by loading only the data necessary for loading into main memory.
그러나 컬럼그룹 단위로 데이터를 저장할 때는 다음의 2가지 경우를 고려해야 한다. 첫번째, 컬럼그룹이 하나의 컬럼으로 구성될 경우로서 이때는 페이지 내에 컬럼 데이터를 그대로 저장함으로써 컬럼기반의 메모리 페이지를 구성할 수 있다. 두번째는 컬럼그룹이 2개 이상의 컬럼으로 구성될 경우로써, 컬럼그룹 단위로 메모리내 저장시 하나의 컬럼 내에서 셀 키 기반 접근시 효율적이지 못하다. 그러므로 셀 키 기반의 접근을 고려하여 페이지를 구성하여야 하므로 컬럼 단위로 분할하여 메모리의 페이지에 저장한다. 컬럼 별로 저장시, 키 기반 접근을 고려하여 페이지 내의 컬럼 페이지는 키 페이지와 값 페이지로 구성하여 저장함으로써 셀 키에 의한 데이터 검색성능을 향상시킨다.However, when storing data in column group units, two cases should be considered. First, when a column group consists of one column, a column-based memory page can be configured by storing column data in the page as it is. Secondly, when a column group is composed of two or more columns, it is not efficient when cell key-based access is performed in one column when stored in memory in a column group unit. Therefore, the page should be composed in consideration of cell key-based access, so it is divided into columns and stored in the page of memory. When storing by column, considering the key-based approach, the column page in the page is composed of the key page and the value page and stored to improve the data retrieval performance by the cell key.
도 1은 웹 페이지를 저장한 웹 테이블의 일실시예를 도시한 개략도이고, 도 2는 도 1의 테이블을 기초로 메모리 페이지를 구성한 일실시예를 도시한 개략도이다.1 is a schematic diagram illustrating an embodiment of a web table storing a web page, and FIG. 2 is a schematic diagram illustrating an embodiment of configuring a memory page based on the table of FIG. 1.
도 1에서 도시된 바와 같이, 테이블에서 contents 컬럼과 anchor 컬럼이 존재하고 각 contents 컬럼과 anchor 컬럼이 컬럼그룹을 구성한다고 할 때, 도 2에 도시된 바와 같이 메모리 내에 페이지를 구성할 수 있다.As illustrated in FIG. 1, when a contents column and an anchor column exist in a table, and each contents column and anchor column constitute a column group, a page may be configured in a memory as illustrated in FIG. 2.
페이지 헤더(page header)(100)는 페이지 ID, 서브페이지의 시작주소 (포인 터) 및 크기 등 페이지를 관리하기 위한 정보들을 저장한다. 도시된 바와 같이, 4개의 서브페이지(예컨대, 로우 키 페이지(200), contents 컬럼 페이지(310), anchor 키 페이지(321), anchor 값 페이지(322))로 구성되었기 때문에 페이지 헤더는 4개의 포인터를 저장한다.The
로우 키 페이지(200)는 로우 키(210)와 각 컬럼의 저장 위치에 대한 정보(220)를 갖는다. 각 컬럼 페이지의 오프셋 테이블(offset table)에 존재하는 컬럼의 시작위치를 저장한 블록을 포인터로 지시함으로써 상기 컬럼의 저장위치 정보(220)를 표시할 수 있다.The
컬럼 페이지(300)는 컬럼이 키가 없는 경우이면 값 페이지 만으로 구성되고 (예컨대 contens 컬럼(310)), 키가 있는 경우라면 키 페이지와 값 페이지로 구분하여 각각 셀 키와 데이터를 저장한다. (예컨대 anchor 컬럼(320))The
도 3은 본 발명에 따른 페이지 내 데이터를 검색 또는 갱신하는 방법의 순서도를 보여준다. 3 shows a flowchart of a method for retrieving or updating data in a page according to the present invention.
예를 들어 아래와 같은 명령어를 처리하는 경우, 이 명령어는 테이블 T 내에서 "com.cnn.www"를 로우 키로 하고, "anchor"를 컬럼으로 하는 모든 데이터를 검색하라는 명령어이다.For example, if you process the following command, this command will retrieve all data in table T with "com.cnn.www" as a low key and "anchor" as a column.
get (T, "com.cnn.www", "anchor")get (T, "com.cnn.www", "anchor")
상기 명령어를 처리하기 위해서, 먼저 페이지 헤더 정보에서 로우 키 페이지의 주소를 찾아서 로우 키 페이지로 이동한다 (S301). 로우 키 페이지에서 페이지 의 오프셋 테이블을 이용하여 로우 키를 검색한다 (S302). 로우 키 데이터는 로우 키, 오프셋 테이블 내 셀 데이터의 포인터를 가지는 블록의 주소 및 키-값 데이터의 개수를 포함하고 있기 때문에, 셀 키 데이터를 검색할 수 있다. In order to process the command, first, the address of the low key page is found in the page header information and then moved to the low key page (S301). In the low key page, the low key is searched using the offset table of the page (S302). Since the low key data includes the low key, the address of the block having the pointer of the cell data in the offset table, and the number of key-value data, the cell key data can be retrieved.
상기 로우 키 데이터를 기초로 해당 컬럼을 결정하고, 해당 컬럼의 키 페이지가 존재하는 경우 상기 해당 컬럼의 키 페이지 주소를 획득하고 상기 키 페이지로 이동하고 (S303), 상기 키 페이지에서 셀 키를 검색한다 (S304).Determine a corresponding column based on the row key data, and if a key page of the corresponding column exists, obtain a key page address of the corresponding column, move to the key page (S303), and search for a cell key in the key page. (S304).
상기와 마찬가지로, 로우 키 데이터를 기초로 값 페이지의 주소를 획득하고 상기 값 페이지로 이동하고 (S305), 값 데이터를 검색하여 질의 데이터의 검색을 수행할 수 있다 (S306). 이때, 상기 로우 키 데이터를 기초로 해당 컬럼의 키 페이지 주소 및 값 페이지의 주소를 구하는 과정은 셀 키 및 값 데이터의 검색 전에 함께 발생할 수도 있고, 각각 셀 키 및 값 데이터의 검색 단계 직전에 수행될 수도 있다.As described above, an address of a value page may be obtained based on the row key data, the value page may be moved (S305), and the value data may be searched to search the query data (S306). In this case, the process of obtaining the key page address and the value page address of the corresponding column based on the row key data may occur together before retrieval of the cell key and value data, and may be performed immediately before the retrieval step of the cell key and value data, respectively. It may be.
이상, 바람직한 실시예와 첨부도면의 참조하여 본 발명의 구성에 대하여 상세히 설명하였으나, 이는 예시에 불과한 것으로서 본 발명의 기술적 사상의 범주내에서 다양한 변형과 변경이 가능함은 물론이다.As mentioned above, although the configuration of the present invention has been described in detail with reference to the preferred embodiments and the accompanying drawings, it is only an example and various modifications and changes are possible within the scope of the technical idea of the present invention.
따라서, 본 발명의 권리범위는 이하의 특허청구범위의 기재에 의하여 정하여 져야 할 것이다.Therefore, the scope of the present invention should be defined by the following claims.
도 1은 웹 페이지를 저장한 웹 테이블의 일실시예를 도시한 개략도.1 is a schematic diagram illustrating one embodiment of a web table storing a web page;
도 2는 도 1의 테이블을 기초로 메모리 페이지를 구성한 일실시예를 도시한 개략도.FIG. 2 is a schematic diagram illustrating an embodiment in which memory pages are configured based on the table of FIG. 1; FIG.
도 3은 본 발명에 따른 페이지 내 데이터를 검색 또는 갱신하는 방법의 순서도.3 is a flow chart of a method for retrieving or updating data in a page according to the present invention.
Claims (8)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070132588A KR100921683B1 (en) | 2007-12-17 | 2007-12-17 | Method Of Data Storing In Memory Page With Key-Value Data Model |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070132588A KR100921683B1 (en) | 2007-12-17 | 2007-12-17 | Method Of Data Storing In Memory Page With Key-Value Data Model |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090065136A true KR20090065136A (en) | 2009-06-22 |
KR100921683B1 KR100921683B1 (en) | 2009-10-15 |
Family
ID=40993573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070132588A KR100921683B1 (en) | 2007-12-17 | 2007-12-17 | Method Of Data Storing In Memory Page With Key-Value Data Model |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100921683B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012023929A1 (en) * | 2010-08-17 | 2012-02-23 | Hewlett-Packard Development Company, L.P. | Encryption key management |
US20170242867A1 (en) * | 2016-02-23 | 2017-08-24 | Vikas Sinha | System and methods for providing fast cacheable access to a key-value device through a filesystem interface |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2557113B2 (en) * | 1988-11-29 | 1996-11-27 | 松下電器産業株式会社 | Dual port dynamic memory |
JP3176228B2 (en) * | 1994-08-23 | 2001-06-11 | シャープ株式会社 | Semiconductor storage device |
KR100328726B1 (en) * | 1999-04-29 | 2002-03-20 | 한탁돈 | Memory access system and method thereof |
FR2798767B1 (en) | 1999-09-16 | 2001-12-14 | St Microelectronics Sa | METHOD FOR WRITING IN PAGE MODE OF AN ELECTRICALLY PROGRAMMABLE / ERASABLE NON-VOLATILE MEMORY AND CORRESPONDING ARCHITECTURE |
-
2007
- 2007-12-17 KR KR1020070132588A patent/KR100921683B1/en active IP Right Grant
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012023929A1 (en) * | 2010-08-17 | 2012-02-23 | Hewlett-Packard Development Company, L.P. | Encryption key management |
US9165158B2 (en) | 2010-08-17 | 2015-10-20 | Hewlett-Packard Development Company, L.P. | Encryption key management using distributed storage of encryption-key fragments |
US20170242867A1 (en) * | 2016-02-23 | 2017-08-24 | Vikas Sinha | System and methods for providing fast cacheable access to a key-value device through a filesystem interface |
US11301422B2 (en) * | 2016-02-23 | 2022-04-12 | Samsung Electronics Co., Ltd. | System and methods for providing fast cacheable access to a key-value device through a filesystem interface |
Also Published As
Publication number | Publication date |
---|---|
KR100921683B1 (en) | 2009-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7158996B2 (en) | Method, system, and program for managing database operations with respect to a database table | |
CN107423422B (en) | Spatial data distributed storage and search method and system based on grid | |
KR102177190B1 (en) | Managing data with flexible schema | |
US20050027692A1 (en) | Method, system, and program for accessing data in a database table | |
US8732139B2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
US6374232B1 (en) | Method and mechanism for retrieving values from a database | |
CN103020204B (en) | A kind of method and its system carrying out multi-dimensional interval query to distributed sequence list | |
US20120323971A1 (en) | Optimizing data storage and access of an in-memory database | |
US20150142733A1 (en) | System and method for efficient management of big data in a database using streaming tables | |
US20100257181A1 (en) | Dynamic Hash Table for Efficient Data Access In A Relational Database System | |
CN103345518B (en) | Self-adapting data memory management method based on data block and system | |
US10521117B2 (en) | Unified table delta dictionary memory size and load time optimization | |
CN103440245A (en) | Line and column hybrid storage method of database system | |
JP2003517165A (en) | System for managing RDBM fragmentation | |
US10289709B2 (en) | Interleaved storage of dictionary blocks in a page chain | |
US7499927B2 (en) | Techniques for improving memory access patterns in tree-based data index structures | |
JPWO2010084754A1 (en) | Database system, database management method, and database structure | |
US20050021924A1 (en) | Memory management tile optimization | |
Ma et al. | FILM: a fully learned index for larger-than-memory databases | |
US6826563B1 (en) | Supporting bitmap indexes on primary B+tree like structures | |
CN107273443B (en) | Mixed indexing method based on metadata of big data model | |
CN111708895B (en) | Knowledge graph system construction method and device | |
KR100921683B1 (en) | Method Of Data Storing In Memory Page With Key-Value Data Model | |
CN112000666A (en) | Nematic database management system | |
JPH07334402A (en) | Data base as main memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120928 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20130923 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20140926 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20150925 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20181008 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20191007 Year of fee payment: 11 |